Tôi đã có ấn tượng rằng virtualenv --no-site-packages
sẽ tạo ra một môi trường Python hoàn toàn riêng biệt và tách biệt, nhưng dường như không.
Ví dụ, tôi đã cài đặt python-django trên toàn cầu, nhưng muốn tạo một virtualenv với phiên bản Django khác.
$ virtualenv --no-site-packages foo
New python executable in foo/bin/python
Installing setuptools............done.
$ pip -E foo install Django
Requirement already satisfied: Django in /usr/share/pyshared
Installing collected packages: Django
Successfully installed Django
Từ những gì tôi có thể nói, pip -E foo install
ở trên có nghĩa vụ cài đặt lại một phiên bản mới của Django. Ngoài ra, nếu tôi bảo pip đóng băng môi trường, tôi nhận được rất nhiều gói. Tôi mong đợi rằng một môi trường trong lành với --no-site-packages
điều này sẽ trống?
$ pip -E foo freeze
4Suite-XML==1.0.2
BeautifulSoup==3.1.0.1
Brlapi==0.5.3
BzrTools==1.17.0
Django==1.1
... and so on ...
Tôi có hiểu lầm làm thế nào --no-site-packages
là phải làm việc?
--no-site-packages
là ĐỔI. Chỉ giữ lại để tương thích ngược. Không có quyền truy cập vào các gói trang web toàn cầu bây giờ là hành vi mặc định . Nếu bạn muốn truy cập vào các gói trang web toàn cầu, bạn có thể kích hoạt --system-site-packages
.