我有一个这样的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
。有可能吗?
答案 0 :(得分:21)
Matplotlib和pip似乎并没有很好地结合在一起。所以我认为在这种情况下不可能。
pip
首先下载您的需求文件中列出的软件包而不是运行setup.py
,但它并没有真正安装它(我对pip
的内部结构不太确定)。以这种方式准备好所有包之后,就会安装它们。
问题是,matplotlib
检查numpy
中是否安装了setup.py
(检查本身在setupext.py
中定义)。因此,在执行检查时,numpy
未安装,并且matplotlib setup.py
退出并显示您收到的错误消息(这可能不是错误,因为它可能需要numpy来构建)。 / p>
此问题曾在点issue #24和issue #25中解决。问题已经结束,但提供了更多细节。
到目前为止,我要做的是首先安装numpy,然后安装我的需求文件中的所有软件包。
有一个新的开放pip issue可以解决这个问题。
该问题已关闭为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之后,我意识到需要手动重新安排需求文件,最好是在生成它时。
在简单的情况下(即仅numpy
和matplotlib
需要订购),您只需撤消申请文件: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中安装一些东西来欺骗它从控制台工作,但其他东西只在全局命名空间中,但我忘了我是怎么做到的。我只是不停地安装和卸载东西。