python项目包管理

阅读更多

最近学习django 进行web开发,在deploy程序是碰到一个问题:

 

服务器环境与本地开发环境不是完全一样, 在本地开发过程中安装一些python django 的第三方包如:PIL ,django-voting,debug-toolbar... 一大推。难道要在服务器上从来再pip install 一次吗?

 

想不到pip 提供了一个人性化的功能,导出现项目所有的依赖包:

 

pip freeze >myevn.txt

 

 

Brlapi==0.5.4

CouchDB==0.6

Django==1.2.1

Fabric==0.9.2

GnuPGInterface==0.3.2

Mako==0.2.5

MySQL-python==1.2.2

PAM==0.4.2

PIL==1.1.7

Pinax==0.9a1

SQLObject==0.13.0

Scrapy==0.10

Twisted==10.0.0

Twisted-Conch==10.0.0

Twisted-Core==10.0.0

myevn.txt 这个文件 叫需求文件

上传到服务器上 然后   pip install -E  site_env  myevn.txt  就可以下载所有依赖的包,并且产生 相应的 virtualenv.


再来解释一下这个  virtualenv 虚拟环境变量

我们有可能同时在开发 A B 两个项目  A 需要 django1.01  B  需要 django1.2.1
但是有可能PYTHONPATH 中我们已经安装了最新版本的django .
virtualenv 为我们很好地解决了这个问题,可以为不同项目创建一个PYTHON 环境。

virtualenv  A_ENV   virtualenv --no-site-packages [dev_place] --python=python2.6

source bin/activate

生成以下目录:
-- django_env
    |-- bin
    |   |-- activate
    |   |-- activate_this.py
    |   |-- easy_install
    |   |-- easy_install-2.6
    |   |-- pip
    |   `-- python
    |-- build
    |-- include
    |   `-- python2.6 -> /usr/include/python2.6
    `-- lib
        `-- python2.6

然后根据不同的需求 修改对应的包

deactivate 退出该环境

虽然这样做会产生一些磁盘空间的消耗,但是不用再担心各个项目依赖不同版本的包问题了。








你可能感兴趣的:(Python,Django,CouchDB,MySQL,Web)