Matplotlib要求与virtualenv中的pip安装

时间:2012-08-03 14:28:14

标签: python numpy matplotlib virtualenv pip

我有一个这样的requirements.txt文件:

numpy
matplotlib

当我在新虚拟环境中尝试pip install -r requirements.txt时,我得到了这个:

REQUIRED DEPENDENCIES

             numpy: no

                    * You must install numpy 1.1 or later to build

                    * matplotlib.

如果我先安装numpy和matplotlib,它可以正常工作。但是我想继续使用pip install -r requirements.txt。有可能吗?

6 个答案:

答案 0 :(得分:21)

Matplotlib和pip似乎并没有很好地结合在一起。所以我认为在这种情况下不可能。

pip首先下载您的需求文件中列出的软件包而不是运行setup.py,但它并没有真正安装它(我对pip的内部结构不太确定)。以这种方式准备好所有包之后,就会安装它们。

问题是,matplotlib检查numpy中是否安装了setup.py(检查本身在setupext.py中定义)。因此,在执行检查时,numpy未安装,并且matplotlib setup.py退出并显示您收到的错误消息(这可能不是错误,因为它可能需要numpy来构建)。 / p>

此问题曾在点issue #24issue #25中解决。问题已经结束,但提供了更多细节。

到目前为止,我要做的是首先安装numpy,然后安装我的需求文件中的所有软件包。

2012年12月更新

有一个新的开放pip issue可以解决这个问题。

2013年4月更新

该问题已关闭为WONTFIX

答案 1 :(得分:10)

这是图书馆的已知问题,目前正在讨论Matplotlib增强提案:https://github.com/matplotlib/matplotlib/wiki/MEP11。 直到它修复了我能想象的唯一解决方案是重新打包库以删除numpy检查。

答案 2 :(得分:1)

是。 " requirements.txt"只是一个平面文件,pip可以用来安装包。在该文件中,您可以更改依赖项的版本。例如,看起来您至少需要1.1,所以请尝试使用&nbspy ' numpy'是:

numpy的== 1.1

或者,你可以使用> =这样:

numpy的&GT = 1.1

这可能是什么阻碍了你。但是,AFAIK,matplotlib应该已经依赖于numpy了。似乎可能需要修复。

另见How to pip install a package with min and max version range?

In setup.py or pip requirements file, how to control order of installing package dependencies?

答案 3 :(得分:0)

最近玩了pip之后,我意识到需要手动重新安排需求文件,最好是在生成它时。

在简单的情况下(即仅numpymatplotlib需要订购),您只需撤消申请文件:pip freeze | sort -r

答案 4 :(得分:0)

我已经习惯了调用脚本来重复设置我的virtualenv;它涉及两个需求文件:一个只有numpy,另一个只有其他一切。

习惯这不是一件可怕的事情,因为当您通过需求文件安装时,pip会尝试“全有或全无”。这样,您可以暂存安装,以便首先安装依赖项。

答案 5 :(得分:0)

我在iPython笔记本中的virtualenv中使用了它!

我有

ipython==2.2.0
numpy==1.8.2
matplotlib==1.4.2

它适用于带有

的iPython笔记本
%matplotlib inline
from pylab import *
plot([1,2,3])

虽然它在iPython控制台中不起作用,但我非常乐意在笔记本中绘制图形!

有一次,我能够通过在virtualenv中安装一些东西来欺骗它从控制台工作,但其他东西只在全局命名空间中,但我忘了我是怎么做到的。我只是不停地安装和卸载东西。