关于python 3.x:无法从wheel格式安装numpy

Cannot install numpy from wheel format

我正在尝试从whl文件安装numpy。我得到错误:

1
numpy-1.9.1%2Bmkl-cp34-none-win_amd64.whl is not a supported wheel on this platform.

细节:Windows 8.1 Pro x64,提升的命令提示

Python3.4.2

戈尔克网站上的包裹编号

numpy-1.9.1%2bmkl-cp34-none-win_amd64.whl已复制到pip.exe文件夹中

日志文件显示:

d:\Program Files\WinPython-64bit-3.4.2.4\python-3.4.2.amd64\Scripts\pip run on 01/23/15 11:55:21
numpy-1.9.1%2Bmkl-cp34-none-win_amd64.whl is not a supported wheel on this platform.
Exception information:
Traceback (most recent call last):
File"D:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File"D:\Python34\lib\site-packages\pip\commands\install.py", line 257, in run
InstallRequirement.from_line(name, None))
File"D:\Python34\lib\site-packages\pip
eq.py", line 167, in from_line
raise UnsupportedWheel("%s is not a supported wheel on this platform." % wheel.filename)
pip.exceptions.UnsupportedWheel: numpy-1.9.1%2Bmkl-cp34-none-win_amd64.whl is not a supported wheel on this platform.

怎么了?

  • 你能打开python并运行import pip; print(pip.pep425tags.get_supported())吗?
  • [('cp34'、'none'、'win32')、('cp34'、'none'、'any')、('cp3'、'none'、'any')、('cp33'、'none'、'any')、('cp32'、'none'、'any')、('cp31'、'none'、'any')、('py3'、'none'、'any')、('py33'、'none'、'any')、('py32'、'none'、'any')、('py31'、'none'、'any')、('py30'、'none'、'any')]
  • 它似乎没有.whl文件名中的标签,所以这个文件可能不适合您的平台?
  • 当你运行import platform; print(platform.platform())时,你会得到什么?可能您的系统未被正确检测为64位。
  • IT报告:Windows-8-6.2.9200
  • "它的.whl文件名中似乎没有标记,所以该文件可能不适合您的平台?"-我的文件名是…CP34…支持的标签包括"(‘cp34’、‘none’、‘any’)"—那么不应该支持这个whl文件吗?
  • 让我们在聊天中继续讨论。
  • 很久以后:我决定使用Python分布。它预装了大量的软件包。其他包可以通过pip添加(我已经这样做了,使用了一些github包)。


简短回答:将文件重命名为numpy-1.9.1%2Bmkl-cp34-none-win32.whl以安装它。

您可以通过运行以下命令来检查您的pip工具接受安装的标签:

1
import pip; print(pip.pep425tags.get_supported())

在这种情况下,PIP错误地检测到您的操作系统是32位的,而您试图安装的文件的文件名是win_amd64

如果将文件重命名为numpy-1.9.1%2Bmkl-cp34-none-win32.whl(现在包含被认为受支持的标记),则可以安装该包。这是一个技巧,因为文件仍然是为64位构建的,但这允许您按预期安装包。

  • 在与Simeon进行了实时聊天后,问题解决了-谢谢。现在的问题是:我如何才能说服PIP系统将我的机器视为一个X64系统——实际上是这样的?在X64平台上,我可以从32GB的RAM中获益。
  • @lmsasu:这可能与这个bug有关:bug s.python.org/issue18987-您在64位操作系统上运行32位python解释器吗?或者,如果没有,我们可能发现了一个相关但不同的bug。pip调用distutils.utils.get_platform()来确定平台。
  • 很奇怪,但是winpython发行版显示了[('cp34'、'none'、'win_amd64')、('cp34'、'none'、'any')、('cp3'、'none'、'any')、('cp33'、'none'、'any')、('cp32'、'none'、'any')、('cp31'、'none'、'any')、('cp30'、'none'、'any')、,因此这里显示了使用Windows x64的cp34。注意,Winpython附带了numpy。
  • 现在,如果升级到PIP 8.0.2+,那么问题就解决了。要在Windows上升级,请参阅此答案。
  • 文件名很重要??太蠢了。文件中没有元数据来告诉它使用的是什么版本吗?我的失败是因为文件被下载管理器命名为scikits.audiolab-0.11.0-cp27-none-win32_001.whl
  • @endolith:考虑一个包索引-文件名用于确定要为试图安装它的平台下载的包。安装程序(PIP)不会下载/打开所有文件来确定要安装的文件,因此元数据应该以某种方式位于文件之外。
  • 我不能为python 3.4安装32或64位的不同库的轮子包,这解决了这个问题。一般的解决方案是将.whl文件名中的cp34m部分更改为none
  • 它与您的操作系统无关。安装python 64位而不是32位。
  • 伟大的!最好的答案!
  • 这不再有效,您需要使用:python3 -c"import wheel.pep425tags as w; print(w.get_supported())" |sed -zE 's/\),/),
    /g'


经过几次测试,我认为问题在于"win32"或"amd64"本身。我试着用"any"替换这两个,但效果很好。

我对这种安装/编译的东西非常熟悉,所以如果我误导了任何人,请原谅,我只是想如果它对我有用,它可能对其他人有用。

  • 你绝对是个传奇人物,谢谢。救了我那么多不可避免的痛苦。
  • 谢谢,这很管用
  • 谢谢您!我希望有一天这样一个荒谬的错误会得到纠正。
  • 你是卓越的


在我的例子中,在python(3.4.4(amd64))上安装gohlke包的解决方案是更改"cp34m"部分,而不是上面的"win*"部分:

python-c"导入pip;打印(pip.pep425tags.get_supported())":

1
2
[('cp34', 'none', 'win_amd64'), ('py3', 'none', 'win_amd64'),
('cp34', 'none', 'any'), ...

LS - LD*:

1
2
3
matplotlib-2.0.0b3-cp34-cp34m-win_amd64.whl
numpy-1.11.1+mkl-cp34-cp34m-win_amd64.whl
pandas-0.18.1-cp34-cp34m-win_amd64.whl

将以上名称更改为:

1
2
3
matplotlib-2.0.0b3-cp34-none-win_amd64.whl
numpy-1.11.1+mkl-cp34-none-win_amd64.whl
pandas-0.18.1-cp34-none-win_amd64.whl

例如,pip安装matplotlib-2.0.0b3-cp34-none-win_amd64.whl

1
2
Processing ...
...Successfully installed matplotlib-2.0.0b3

为了添加到其他可能的解决方案列表中,我必须升级pip本身。Gholke网站上最新的二进制文件有"cp27m"标签,当我使用以下方法检查pip标签时,它没有显示出来:

1
import pip; print(pip.pep425tags.get_supported())

在我升级了pip之后,轮子没有工作,只是做了一个普通的pip install numpy工作

  • 升级后,我第一次尝试安装了轮子。
  • @这是正确的答案:更新pip pip install --upgrade pip


如果安装了python 3.4,请确保安装了车轮的-cp34-版本,而不是-cp35-


我也有同样的问题,尝试着用建议的解决方案来解决。我把win64改成win32,但效果不太好。但后来我把名字改成了原来的名字,这次它起作用了!我做的唯一额外的事就是下线。这太奇怪了。


导航到您的'pip.py'所在的目录,然后在win命令'..\python.exe pip.py install name_of_package.whl'上键入following。这应该有效。


作为解决方法,卸载numpy包:pip uninstall numpy然后从缓存重新安装:pip install numpy在从3.4.1升级到3.4.2之后,几个包也出现了同样的问题。


当前的winpython包管理器需要一个2个字符的修复程序来接受以识别新的numpy+mkl"wheel"。https://github.com/stonebig/winpython/commit/5e13230609a2e9f4d66d98c376207ce4b4dd050


这与您的操作系统无关。卸载python 32位并安装python 64位,或者查找32位车轮文件。