2015-10-24 60 views
4

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

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

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

我注意到,当我安装需要numpy的使用pip例如一个包,而不是pip install scipy跳过numpy的扶养的再次安装到不同的位置。

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

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

+2

姆姆,没有。你应该做的就是停止混合'pip'和'apt' :)。你不能指望一个软件包管理者知道其他软件包管理者。相反,您应该注意不要使用两个试图安装到相同前缀的不同包管理器。 – cel

+0

不要混合'pip'和'apt'的Ubuntu安装。即使'pip'安装在同一个目录中,Ubuntu也不会知道这个软件包,你可以用'apt'来覆盖它。 – Bakuriu

+2

我同意你的评论,但这是无法避免的,有时apt-get上的软件包是预编译的,所以我想将它们用于安装和一些pip软件包,而不是在apt-get Universe中,所以我需要两者中最好的世界。也许我应该问的是,如何将pip安装到与apt-get相同的位置? – MrKnotts

回答

3

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

一种策略是创建知道其父解释器的包的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上。车轮已经是二进制的,因此不需要进一步编译。