停止 pip 安装已经使用 apt-get 安装的依赖项

Stop pip installing dependancies already installed using apt-get

如何确保使用 pip 安装的软件包不会安装已使用 apt-get 安装的依赖项?

例如,在 Ubuntu 上,您可以使用 apt-get install python-numpy 安装软件包 Numpy。安装到:

usr/local/lib/python2.7/dist-packages 

我注意到,当我使用 pip 安装需要 numpy 的软件包时,pip install scipy 没有跳过 numpy 依赖项,而是再次安装到不同的位置。

/usr/lib/python2.7/dist-packages

pip 应该做的是跳过全局安装的任何 python 包,对吗?

这里的关键是防止多个包管理器安装到同一个目录中。

一个策略是创建一个 virtualenv 知道其父解释器的包。这可以通过使用 --system-site-packages 选项来完成。

virtualenv -p /usr/bin/python --system-site-packages py27
source py27/bin/activate

这个环境默认不会是空的。您可能想要比较 /usr/bin/python -m pip listpython -m pip list.

另请参阅此 question


对于许多(科学)包,pypi 上也有可用的轮子。 Wheels 已经是二进制的,因此不需要进一步编译。