我原本认为virtualenv --no-site-packages
将创建完全独立和隔离的Python环境,但事实并非如此。
例如,我在全局安装了python-django,但希望创建一个带有不同Django版本的虚拟环境。
$ 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
据我所知,上面的pip -E foo install
应该是重新安装Django的新版本。另外,如果我告诉pip冻结环境,我会得到很多软件包。我认为对于一个带有--no-site-packages
的新环境来说,这应该是空白的吧?$ 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 ...
我是否误解了--no-site-packages
的工作原理?
--no-site-packages
已被弃用,仅为向后兼容而保留。现在默认行为是 无法访问全局 site-packages。如果你想访问全局 site-packages,可以启用--system-site-packages
。 - Ynjxsjmh--no-site-packages
吗? - Aaron McDaid--no-site-packages
。 - Ynjxsjmh