Ubuntu PIP 全局安装软件包,而不是在 VirtualEnv 内部安装

Ubuntu PIP 全局安装软件包,而不是在 VirtualEnv 内部安装

我正在尝试创建一个虚拟环境并从项目中的 requirements.txt 中安装包。

当我创建环境时,我会检查 python 和 pip 确实来自该环境。也就是说,当我运行:

source ./virtualenv/bin/activate

which pip

which python

我得到的结果指向位于 virtualenv 目录内的二进制文件

然后我继续安装软件包: pip install -r requirements.txt

有一段时间,requirements.txt 中的这一行让我很困惑pkg-resources=0.0.0。后来发现,这一行是因为 Ubuntu 的一个 bug 而被输入到这个文件中的。你可能猜到了,我是在一台 Ubuntu 机器上创建了这个文件的。

一旦我划掉线,安装就会继续。

但是,当我在安装后运行 pip list 时,列表仅包含

pip (8.1.1) pkg-resources (0.0.0) setuptools (20.7.0)

而且,如果我停用虚拟环境并全局运行 pip list,我会看到所有依赖项都已全局安装。

这里有两个问题。第一个问题最明显,为什么会发生这种情况?第二个问题是,我该如何清理全局包并卸载现在驻留在那里的污染物?

附录:

另一个奇怪的行为如下。当我尝试sudo pip uninstall -r requirements.txt在虚拟环境中运行并希望撤销全局安装时,出现以下错误:

无法卸载需求aldryn-apphooks-config,未安装

也就是说,当我尝试卸载时,pip 会尝试在虚拟环境中寻找包。

另一方面,当我停用虚拟环境时,我可以使用相同的命令成功地从全局安装中卸载软件包。

不知何故,与 pip uninstall 命令相比,Ubuntu 上的 pip install 命令的工作方式有所不同。它们在不同的地方“查找”软件包。

相关内容