新创建的Python虚拟环境中的默认库

2024-04-29 03:12:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pythonvirtualenv工具创建了一个新的虚拟环境。在

virtualenv venv

然后我激活了虚拟环境

^{pr2}$

然后我做了一个pip freeze这就是我得到的:

(venv)$ pip freeze
Flask==0.10.1
Werkzeug==0.9.6
itsdangerous==0.24
lxml==3.4.0
numpy==1.9.1
pdir==0.2.2
virtualenv==1.11.6
wsgiref==0.1.2

我想知道,当我甚至没有在虚拟环境中显式地安装任何东西时,怎么会安装这么多库。在

更新1:当一些答案建议时,我在第1步中也使用了virtualenv --no-site-packages来创建一个新的venv,但同样的问题仍然存在。好像用这个论点根本没有效果。在

更新2:我能够解决问题,并将我的经验发表在下面。正如评论中指出的,这里有一个相关的问题,link,它帮助我解决了这个问题。在


Tags: pip工具numpyflaskvirtualenvvenv虚拟环境lxml
3条回答

我能解决这个问题。在我的~/.bash_配置文件中,我遇到了以下一行,这导致了一个问题:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH

正如martinlewis在对这个related question的回答中指出的, no-site-packages将从搜索路径. 但标准Python路径中的任何其他内容仍将保留。在

附言:我仍然不知道为什么virtualenv是这样工作的。为什么要包括PYTHONPATH上的包呢。但至少知道这能解决我的问题。在

这些是已经在您的系统上全局安装的库。在

最佳实践是在创建virtualenv时使用^{}选项,以避免这个问题。在

参见documentation - The system-site-packages Option

If you build with virtualenv system-site-packages ENV, your virtual environment will inherit packages from /usr/lib/python2.7/site-packages (or wherever your global site-packages directory is).

This can be used if you have control over the global site-packages directory, and you want to depend on the packages there. If you want isolation from the global system, do not use this flag.

这些库已安装在您的系统中。除非指定 no-site-packages,否则它们将被继承。在

相关问题 更多 >