Her seferinde yalnızca birkaç projeniz varsa, hiçbir şey sizi her biri için yeni bir sanal ortam oluşturmaktan ve paketlerinizi doğrudan içine koymaktan alıkoyamaz:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
Bu yaklaşımın avantajı, içindeki projeye ait olan etkinleştirme komut dosyasını bulacağınızdan her zaman emin olabilmenizdir.
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
Biraz daha organize olmaya karar verirseniz, tüm sanal ortamlarınızı tek bir klasöre koymayı ve her birine üzerinde çalıştığınız projenin adını vermeyi düşünmelisiniz.
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
Bu şekilde, işler ters gittiğinde her zaman yeni bir virtualenv ile yeniden başlayabilirsiniz ve proje dosyalarınız güvende kalır.
Diğer bir avantaj ise, projelerinizin birçoğunun aynı virtualenv'i kullanabilmesidir, bu nedenle çok fazla bağımlılığınız varsa aynı kurulumu tekrar tekrar yapmanız gerekmez.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Düzenli olarak virtualenv'leri kurması ve sökmesi gereken kullanıcılar için virtualenvwrapper'a bakmak mantıklı olacaktır.
http://pypi.python.org/pypi/virtualenvwrapper
Virtualenvwrapper ile şunları yapabilirsiniz:
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
Artık "foo" ve "bar" projeleri üzerinde çalışırken sanal ortamlarınızın nerede olduğu konusunda endişelenmenize gerek yok:
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
"Foo" projesi üzerinde çalışmaya şu şekilde başlarsınız:
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Ardından "bar" projesine geçiş şu kadar basit:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Oldukça temiz, değil mi?