所以每个人都在告诉我使用pip和virtualenv,但是没有人能够解释我它是如何比我目前的方法更好.人们使用pip和virtualenv的主要原因似乎是其他人都在使用它...
我确信有充分的理由使用PIP和virtualenv,但我无法在Google上找到它们.我希望来自stackoverflow社区的人能够向我解释它们.
以下是我目前如何组织我的Django项目:
site/src/ : contains all python-only dependencies of my project
site/lib/ : contains symlinks to the python packages
site/[projectname]/ : contains all my project specific code
Run Code Online (Sandbox Code Playgroud)
整个站点文件夹在我的存储库中检查(是的,包括所有仅限python的依赖项,例如django本身).
所有非python-only依赖项(PIL,psycopg2,...)都记录在README中并安装在系统级别(apt-get install ....)
例如,假设我有一个项目名称"projectfoo"依赖于django-1.2.3,pygeoip-0.1.3和psycopg2我会:
/usr/lib/python2.5/site-packages/psycopg2
~/projects/foo/site : checkout of my repository
~/projects/foo/site/src/django-1.2.3
~/projects/foo/site/src/pygeoip-0.1.3
~/projects/foo/site/lib/django -> symlink to ../src/django-1.2.3/django
~/projects/foo/site/lib/pygeoip -> symlink to ../src/pygeoip-0.1.3/pygeoip
~/projects/foo/site/projectfoo/
Run Code Online (Sandbox Code Playgroud)
现在,在实践中,这与PIP/virtualenv相比如何?
使用我当前的方法部署项目:
svn checkout https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/site
Run Code Online (Sandbox Code Playgroud)
使用PIP/virtualenv进行部署:
wget https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/projectfoo-requirements.txt
pip install -U -E projectfoo-venv -r projectfoo-requirements.txt
Run Code Online (Sandbox Code Playgroud)
使用我当前的方法处理项目:
cd ~/projects/foo/site/projectfoo
export PYTHONPATH=.:..:../lib
./manage.py runserver 0:8000
Run Code Online (Sandbox Code Playgroud)
使用PIP/virtualenv处理项目 …