【发布时间】:2017-06-05 10:07:48
【问题描述】:
我创建了一个 Python 虚拟环境,并通过以下方式激活它:
joe@joe-mint $ source ./venvs/deep-learning/bin/activate
这会将提示变成:
(deep-learning) joe@joe-mint $
现在,每当我运行 python 包或尝试安装一个包时,系统似乎忽略了它在虚拟环境中并在系统范围内执行操作的事实:
(deep-learning) joe@joe-mint $ which pip
/usr/local/bin/pip
当我尝试安装不在我的系统上的新软件包时,也会发生同样的情况;它将它们安装到系统文件(即 /usr/bin)而不是虚拟环境中。
我的虚拟环境出了什么问题?如何让它忽略系统文件并在环境中执行所有操作?
我查看了this 问题,它说在创建虚拟环境时使用显式标志以使其使用本地环境包,但我使用python-3.5 -m venv 创建虚拟环境,并删除了这个标志在此版本中,因为它现在是默认选项。
我还查看了this 问题,可以确认VIRTUAL_ENV 变量在虚拟环境的activate 文件中设置正确。
【问题讨论】:
-
echo $PATH的结果是什么? activate 应该将 venv 的二进制文件放在 PATH 的前面 -
@jonatan - 结果是因为我安装了没有 pip 的 venv,
pip命令正在使用系统的命令。显然,尽管处于虚拟环境中,但这会导致它将软件包安装到系统中。我不太明白,但我设法在我的回答中解决了它。 -
@holdenweb - 我故意安装了没有 pip 的 venv,因为a bug 阻止了我做其他事情。
-
这就是你的虚拟环境的问题
标签: python virtualenv