Si solo tiene unos pocos proyectos de vez en cuando, nada le impide crear un nuevo virtualenv para cada uno y poner sus paquetes dentro:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
La ventaja de este enfoque es que siempre puede estar seguro de encontrar el script de activación que pertenece al proyecto dentro.
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
Si decides ser un poco más organizado, deberías considerar poner todos tus virtualenvs en una carpeta y nombrar a cada uno de ellos según el proyecto en el que estás trabajando.
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
De esta manera, siempre puede comenzar de nuevo con un nuevo virtualenv cuando las cosas vayan mal y los archivos de su proyecto se mantienen seguros.
Otra ventaja es que varios de sus proyectos pueden usar el mismo virtualenv, por lo que no tiene que hacer la misma instalación una y otra vez si tiene muchas dependencias.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Para los usuarios que regularmente tienen que configurar y eliminar virtualenv, tendría sentido mirar virtualenvwrapper.
http://pypi.python.org/pypi/virtualenvwrapper
Con virtualenvwrapper puedes
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
Ya no tienes que preocuparte por dónde están tus virtualenvs cuando trabajas en los proyectos "foo" y "bar":
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
Así es como empiezas a trabajar en el proyecto "foo":
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Entonces, cambiar a la "barra" del proyecto es tan simple como esto:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Bastante ordenado, ¿no?