Nếu bạn chỉ có một vài dự án thường xuyên, không có gì ngăn bạn tạo một virtualenv mới cho mỗi dự án và đặt các gói của bạn ngay bên trong:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
Ưu điểm của phương pháp này là bạn luôn có thể chắc chắn tìm thấy tập lệnh kích hoạt thuộc về dự án bên trong.
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
Nếu bạn quyết định có tổ chức hơn một chút, bạn nên cân nhắc việc đặt tất cả các virtualenv của mình vào một thư mục và đặt tên cho từng cái theo tên dự án bạn đang thực hiện.
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
Bằng cách này, bạn luôn có thể bắt đầu lại với virtualenv mới khi có sự cố và các tệp dự án của bạn vẫn an toàn.
Một lợi thế khác là một số dự án của bạn có thể sử dụng cùng một virtualenv, vì vậy bạn không cần phải thực hiện cài đặt lặp đi lặp lại cùng một lần nếu bạn có nhiều phụ thuộc.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Đối với những người dùng thường xuyên phải thiết lập và gỡ bỏ các virtualenv, sẽ rất hợp lý khi nhìn vào virtualenvwrapper.
http://pypi.python.org/pypi/virtualenvwrapper
Với virtualenvwrapper, bạn có thể
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
Bạn không còn phải lo lắng về vị trí các virtualenv của mình khi làm việc trên các dự án "foo" và "bar":
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
Đây là cách bạn bắt đầu làm việc với dự án "foo":
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Sau đó, chuyển sang "thanh" của dự án đơn giản như sau:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Khá gọn gàng phải không?