如果您经常只有几个项目,那么没有什么可以阻止您为每个项目创建一个新的virtualenv并将包放入其中:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
这种方法的优点是,您始终可以确保找到属于该项目的激活脚本。
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
如果您决定更加有条理,则应考虑将所有virtualenvs放在一个文件夹中,并以您正在处理的项目命名。
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
这样,当出现问题时,您始终可以从新的virtualenv重新开始,并且项目文件保持安全。
另一个优点是您的多个项目可以使用相同的virtualenv,因此如果您有很多依赖项,则不必一遍又一遍地进行相同的安装。
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
对于经常需要设置和关闭virtualenvs的用户,看一下virtualenvwrapper很有意义。
http://pypi.python.org/pypi/virtualenvwrapper
借助virtualenvwrapper,您可以
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
在项目“ foo”和“ bar”上工作时,您无需再担心virtualenvs的位置:
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
这是您开始处理项目“ foo”的方式:
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
然后,切换到项目“ bar”非常简单:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
很整洁,不是吗?