eagleshi 发表于 2017-4-25 06:53:59

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 --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 退出该环境


虽然这样做会产生一些磁盘空间的消耗,但是不用再担心各个项目依赖不同版本的包问题了。
页: [1]
查看完整版本: python项目包管理