为啥当 PyPi 显示版本 1.0.0 时 pip 安装 matplotlib 版本 0.91.1?
Posted
技术标签:
【中文标题】为啥当 PyPi 显示版本 1.0.0 时 pip 安装 matplotlib 版本 0.91.1?【英文标题】:Why does pip install matplotlib version 0.91.1 when PyPi shows version 1.0.0?为什么当 PyPi 显示版本 1.0.0 时 pip 安装 matplotlib 版本 0.91.1? 【发布时间】:2011-04-03 02:28:38 【问题描述】:2012 年 10 月 15 日更新
PyPi 现在在 1.1.0 中显示 matplotlib,因此这个问题得到了解决。通过以下方式安装 matplotlib:
pip install matplotlib
以下信息过时
PyPi 显示matplotlib 1.0.0。但是,当我通过pip 将matplotlib 安装到virtualenv 时,会安装0.91.1 版。
为什么版本不同? 有没有办法 pip install matplotlib 1.0.0?研究
matplotlib's DOAP record on PyPi 似乎指向了正确的版本。以下是 DOAP 记录供参考:
<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Project><name>matplotlib</name>
<shortdesc>Python plotting package</shortdesc>
<description>matplotlib strives to produce publication quality 2D graphics
for interactive graphing, scientific publishing, user interface
development and web application servers targeting multiple user
interfaces and hardcopy output formats. There is a 'pylab' mode
which emulates matlab graphics</description>
<download-page>https://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.0</download-page>
<homepage rdf:resource="http://matplotlib.sourceforge.net" />
<maintainer><foaf:Person><foaf:name>John D. Hunter</foaf:name>
<foaf:mbox_sha1sum>4b099b4a7f50a1f39642ce59c2053c00d4de6416</foaf:mbox_sha1sum></foaf:Person></maintainer>
<release><Version><revision>1.0.0</revision></Version></release>
</Project></rdf:RDF>
配置
操作系统:Mac OS X 10.6.6 Python 2.7 virtualenv 1.5.1 点 0.8.110 年 8 月 24 日上午 7:09 更新
从 PyPi 镜像安装也会安装 0.91.1 版:
$ pip install -i http://d.pypi.python.org/simple matplotlib
2011 年 1 月 14 日下午 4:54 更新
即使matplotlib 1.0.1 已发布,此问题仍然存在。
【问题讨论】:
【参考方案1】:我也遇到过同样的问题。我不知道为什么会这样,但我确实有解决办法;使用 pip 中的 -f 选项告诉它在哪里可以找到 matplotlib 源。 (这也适用于 requirements.txt)。
pip install -f http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.0/matplotlib-1.0.0.tar.gz matplotlib
【讨论】:
我可以发誓这以前对我有用。现在它安装了 matplotlib 0.91.1。除了 matplotlib 发布新版本之外,不确定发生了什么变化。 这仍然使用 pip 0.8.2 为我安装 matplotlib 1.0.0。也许你应该检查你的 pip 版本?如果您想要目前最新版本的 matplotlib,请将下载 url 替换为 downloads.sourceforge.net/project/matplotlib/matplotlib/…。 使用pip install -f http://... matplotlib
,我最终安装了 0.91.1 版本。 (我使用matplotlib.__version__
来确认安装的版本。我假设实际上安装了1.0.1 时它没有报告0.91.1。)我在使用virtualenv 1.5.1
创建的环境中运行pip 0.8.2。我想知道distribute 0.6.14
是否引起了问题。现在只是猜测。
其他问题可能是我在 virtualenv 中使用了 python2.7。我现在用 python2.6 创建了一个新的 virtualenv。我将发布更新结果。
问题是python2.7 virtualenv。使用 python2.6 virtualenv,我可以使用您的 pip install -f http://... matplotlib
并安装 1.0.1 版。唯一的问题是当我在 python2.6 virtualenv 中pip install scipy
时出现错误。我并没有真正发现在 scipy 和 matplotlib 之间进行权衡,所以我将不得不研究两者的解决方案。【参考方案2】:
发生这种情况是因为 PyPI 上 matplotlib 1.0 的下载链接指向的 URL 似乎不是已知格式的文件(该 URL 以 /download 而不是文件名结尾)。看到这个bug filed on pip。
oyvindio 的解决方法是我目前所知道的最佳选择,直到 pip 对 URL 更加灵活或 matplotlib 修复其 PyPI 链接。
【讨论】:
【参考方案3】:Oyvindio 的建议很棒,但首先我必须安装一些源代码编译 matplotlib 所需的头文件(否则它会拒绝工作)。在 Ubuntu Lucid 中,它是这样的:
$ sudo apt-get build-dep python-matplotlib
然后就可以 pip install matplotlib:
pip install -f http://garr.dl.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.tar.gz matplotlib
【讨论】:
感谢您的信息。鉴于您使用的是 apt-get,您必须使用 debian 衍生产品。 Ubuntu?介意用你的配置更新你的答案吗?我刚刚更新了我的问题,说明我在 Mac OS X 上运行。谢谢。 谢谢。这就像一个魅力。我还在 Lucid 上,只是像这样抓住了 v1.1.0: pip install -f sourceforge.net/projects/matplotlib/files/matplotlib/… matplotlib【参考方案4】:我听从了@oyvindio 和@elaichi 的建议,但由于某种未知原因,我仍然获得了 0.91.1 版本。然后编译失败(出现错误src/mplutils.cpp:17: error: ‘vsprintf’ was not declared in this scope
):
直接从 git 安装 matplotlib 对我有用:
pip install -e git+git@github.com:matplotlib/matplotlib.git#egg=matplotlib
【讨论】:
与选择的响应相比,此解决方案将为您提供最新代码而不是 1.0.0以上是关于为啥当 PyPi 显示版本 1.0.0 时 pip 安装 matplotlib 版本 0.91.1?的主要内容,如果未能解决你的问题,请参考以下文章
pip install -U selenium 报错为啥呢?