頻繁にプロジェクトが数個しかない場合は、プロジェクトごとに新しい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
>>>
もう少し整理することにした場合は、すべてのvirtualenvを1つのフォルダーに入れ、作業中のプロジェクトにちなんでそれぞれに名前を付けることを検討する必要があります。
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
このようにして、問題が発生したときにいつでも新しいvirtualenvでやり直すことができ、プロジェクトファイルは安全に保たれます。
もう1つの利点は、複数のプロジェクトで同じ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」で作業するときに、virtualenvsがどこにあるかを心配する必要はもうありません。
/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
>>>
かなりきれいですね。