1

我在我的 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)

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

(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 上不会发生。谢谢!

4

1 回答 1

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解决问题。

于 2014-05-22T22:10:37.803 回答