如果你经常只有几个项目,没有什么能阻止你为每个项目创建一个新的 virtualenv,并将你的包放在里面:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
这种方式的好处是,你总能确保在里面找到属于项目的activate脚本。
$ 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”时,您不必再担心您的虚拟环境在哪里:
/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
>>>
很整洁,不是吗?