Если у вас есть только несколько проектов, каждый так часто, ничто не мешает вам создать новый 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
Вам больше не придется беспокоиться о том, где ваши virtualenvs находятся при работе над проектами "Foo" и "бар":
/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
>>>
Очень аккуратно, не так ли?
@jkp: Я не согласен. Как вы планируете приложение python - это другое дело в том, как вы находите это приложение в virtualenv для целей разработки. Это связано, но не то же самое. Пожалуйста, не закрывайте дубликаты. – jcdyer