Якщо у вас є так часто кілька проектів настільки часто, ніщо не заважає вам створити новий 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
/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
>>>
Тоді перехід на проект "бар" простий, як це:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Досить акуратно, чи не так?