Si vous n'avez que quelques projets de temps en temps, rien ne vous empêche de créer une nouvelle virtualenv pour chacun et de placer vos packages directement à l'intérieur:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
L'avantage de cette approche est que vous pouvez toujours être sûr de trouver le script d'activation qui appartient au projet à l'intérieur.
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
Si vous décidez d'être un peu plus organisé, vous devriez envisager de mettre tous vos virtualenv dans un seul dossier et de nommer chacun d'eux d'après le projet sur lequel vous travaillez.
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
De cette façon, vous pouvez toujours recommencer avec une nouvelle virtualenv lorsque les choses tournent mal, et vos fichiers de projet restent en sécurité.
Un autre avantage est que plusieurs de vos projets peuvent utiliser le même virtualenv, vous n'avez donc pas à refaire la même installation encore et encore si vous avez beaucoup de dépendances.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Pour les utilisateurs qui doivent régulièrement configurer et supprimer des virtualenvs, il serait logique de regarder virtualenvwrapper.
http://pypi.python.org/pypi/virtualenvwrapper
Avec virtualenvwrapper, vous pouvez
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
Vous n'avez plus à vous soucier de la localisation de vos virtualenvs lorsque vous travaillez sur les projets "foo" et "bar":
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
Voici comment vous commencez à travailler sur le projet "foo":
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Ensuite, passer au projet "bar" est aussi simple que ceci:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Assez bien, n'est-ce pas?