Nếu bạn chỉ có một vài dự án tất cả vì vậy thường, không có gì ngăn bạn từ việc tạo ra một virtualenv mới cho mỗi một, và đưa 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 tổ chức hơn một chút, bạn nên cân nhắc đặt tất cả virtualenv vào một thư mục và đặt tên từng thư mục sau dự án bạn đang làm việc.
/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 ảo mới khi gặp sự cố và tệp dự án của bạn luôn an toàn.
Một ưu điểm khác là một số dự án của bạn có thể sử dụng cùng virtualenv, do đó bạn không phải thực hiện quá trình cài đặt giống nhau nếu bạn có nhiều phụ thuộc.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Đối với người dùng thường xuyên phải thiết lập và xé nhỏ virtualenv, bạn nên xem 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 phải lo lắng về nơi virtualenvs của bạn khi làm việc trên các dự án "foo" và "bar":
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
này là cách bạn bắt đầu làm việc trên dự án "foo":
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Sau đó, chuyển sang dự án "thanh" đơn giản như sau:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Khá gọn gàng, phải không?
@jkp: Tôi không đồng ý. Cách bạn bố trí một ứng dụng python là một vấn đề khác với cách bạn định vị ứng dụng đó trong một virtualenv cho các mục đích phát triển. Nó có liên quan, nhưng không giống nhau. Vui lòng không đóng dưới dạng trùng lặp. – jcdyer