使用venv的pip显示安装了许多模块

时间:2014-05-21 23:56:09

标签: python-3.x pip python-venv

我在Ubuntu 13.10笔记本电脑上从源代码构建了Python 3.3.0。

使用/usr/bin/virtualenv -p /python3.3.0/bin/python3 foo_virt命令创建虚拟环境时,我发现在运行pip freeze时没有安装任何模块,这是我期望的行为。

使用/python3.3.0/bin/python3 -m venv foo_virt时,我看到安装了大量模块:

(foo_virt) user@laptop:/foo_virt$ /usr/bin/pip freeze --local
Jinja2==2.7
Mako==0.8.1
MarkupSafe==0.15
PAM==0.4.2
Pillow==2.0.0
Pygments==1.6
SecretStorage==1.0.0
... (total of 75 modules listed)

我尝试按照模块的文档python3 get-pip.py运行,为该特定版本的Python安装pip。但我仍然看到所有这些模块:

(foo_virt) user@laptop:/foo_virt$ which pip
/foo_virt/bin/pip
(foo_virt) user@laptop:/foo_virt$ pip freeze --local
Jinja2==2.7
Mako==0.8.1
MarkupSafe==0.15
PAM==0.4.2
Pillow==2.0.0
Pygments==1.6
SecretStorage==1.0.0
... (still 75 modules)

如何使用venv,因此虚拟环境中没有安装任何模块?我没有在文档中找到任何帮助我的选项。此外,Windows 7上没有发生此问题。谢谢!

1 个答案:

答案 0 :(得分:1)

bash缓存通过搜索PATH找到的命令。您可以输入hash来查看当前缓存。添加-r会重置缓存。 -d将删除个人姓名。获取激活脚本应重置缓存:

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
    hash -r
fi

也许你在get-pip.py之前运行了系统pip。在这种情况下,hash -d pip解决了这个问题。