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

时间:2014-11-24 09:39:18

标签: python virtualenv python-venv

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

virtualenv venv

然后我激活了虚拟环境

source venv/bin/activate

然后我做了一个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,这有助于我解决问题。

4 个答案:

答案 0 :(得分:2)

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

最佳做法是在创建virtualenv时使用--no-site-packages选项,以避免出现这个问题。

答案 1 :(得分:0)

请参阅documentation - The --system-site-packages Option

  

如果您使用virtualenv --system-site-packages ENV构建虚拟   环境将从中继承包   /usr/lib/python2.7/site-packages (或者你的全局   site-packages目录是)。

     

如果您可以控制全局站点包,则可以使用此选项   目录,你想依赖于那里的包。如果你想   与全局系统隔离,请勿使用此标志。

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

答案 2 :(得分:0)

我能够解决问题。在我的〜/ .bash_profile文件中;我有以下行创建了一个问题:

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

正如Martin Lewis在对此related question的回答中指出的那样,--no-site-packages将从sys.path中删除标准的site-packages目录。但是仍然存在标准Python路径中的任何其他内容。

P.S:我还不确定为什么virtualenv这样工作。为什么要包含PYTHONPATH上的包。但至少知道这可以解决我的问题。

答案 3 :(得分:0)

“骇客”解决方案将是激活虚拟环境并运行

pip freeze | xargs pip uninstall -y

这将卸载所有不需要的软件包。