Pip: 由于车轮标签在pip 20.0中不匹配,导致“无匹配分布”

创建于 2020-01-21  ·  38评论  ·  资料来源: pypa/pip

环境

  • 点子版本:20.0.1
  • Python版本:3.6.9
  • 操作系统:Ubuntu 18.04

描述
Pip似乎无法再安装任何版本低于0.9.5的mxnet版本。

预期行为
它应该能够。 :-)这在点20之前有效。

如何繁殖
尝试在虚拟环境中安装mxnet==1.3.1

输出量

$ virtualenv -ppython3 /tmp/venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /tmp/venv/bin/python3
Also creating executable in /tmp/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ /tmp/venv/bin/pip install mxnet==1.3.1
ERROR: Could not find a version that satisfies the requirement mxnet==1.3.1 (from versions: 0.9.5)
ERROR: No matching distribution found for mxnet==1.3.1

pip install--verbose会生成一个巨大的日志,该日志似乎与此有关:

  Skipping link: none of the wheel's tags match: py2-none-manylinux1_x86_64, py3-none-manylinux1_x86_64: https://files.pythonhosted.org/packages/f0/2e/b26eb7273aed1945f59993b3b306442eb41684f931b5380821c39cf50a31/mxnet-1.3.1-py2.py3-none-manylinux1_x86_64.whl#sha256=939575fddd45e8ba39177dd3d53ccce64dea312bc08f493392b1ecace9e1b117 (from https://pypi.org/simple/mxnet/)
vendored dependency auto-locked bug

最有用的评论

假设明天我可以从目前的头痛中恢复过来,请期待明天的错误修复版本。 :)

所有38条评论

我们在内部轮子上使用版本20.0.1时也遇到此错误

(venv) C:\depot\bitbucket\mytests\tests_pti>pip -vvv install C:\Users\otrejoso\Downloads\pti-2.0.510-py3-none-win_amd64.whl
Non-user install because user site-packages disabled
Created temporary directory: C:\Users\otrejoso\AppData\Local\Temp\pip-ephem-wheel-cache-wquw3si6
Created temporary directory: C:\Users\otrejoso\AppData\Local\Temp\pip-req-tracker-ik56de2r
Initialized build tracking at C:\Users\otrejoso\AppData\Local\Temp\pip-req-tracker-ik56de2r
Created build tracker: C:\Users\otrejoso\AppData\Local\Temp\pip-req-tracker-ik56de2r
Entered build tracker: C:\Users\otrejoso\AppData\Local\Temp\pip-req-tracker-ik56de2r
Created temporary directory: C:\Users\otrejoso\AppData\Local\Temp\pip-install-vb0u5yy4
Cleaning up...
Removed build tracker: 'C:\\Users\\otrejoso\\AppData\\Local\\Temp\\pip-req-tracker-ik56de2r'
ERROR: pti-2.0.510-py3-none-win_amd64.whl is not a supported wheel on this platform.
Exception information:
....
pip._internal.exceptions.InstallationError: pti-2.0.510-py3-none-win_amd64.whl is not a supported wheel on this platform.

使用pip install pip==19.3.1可以正常工作。

内部车轮也一样。

不起作用:
pip install -U pip==20.0.1; pip install <wheel>
错误:在此平台上不受支持。

作品:
pip install -U pip==19.3.1; pip install <wheel>

似乎平台标签是这里的问题:标签“ any”正在工作,但是此指定转盘具有“ linux_x86_64”。

请注意,我有:

uname -a
Linux <propretiery> 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

 python -c "import wheel.pep425tags as w; print(w.get_supported())"
[('cp27', 'cp27mu', 'linux_x86_64'), ('cp27', 'none', 'linux_x86_64'), ('cp27', 'none', 'any'), ('cp2', 'none', 'any'), ('cp26', 'none', 'any'), ('cp25', 'none', 'any'), ('cp24', 'none', 'any'), ('cp23', 'none', 'any'), ('cp22', 'none', 'any'), ('cp21', 'none', 'any'), ('cp20', 'none', 'any'), ('py2', 'none', 'linux_x86_64'), ('py27', 'none', 'any'), ('py2', 'none', 'any'), ('py26', 'none', 'any'), ('py25', 'none', 'any'), ('py24', 'none', 'any'), ('py23', 'none', 'any'), ('py22', 'none', 'any'), ('py21', 'none', 'any'), ('py20', 'none', 'any')]

同样在这里。

19.3.1可以工作,但20.0.1可以:
pip._internal.exceptions.InstallationError:pyenchant-2.0.0-py2.py3.cp27.cp32.cp33.cp34.cp35.cp36.pp27.pp33.pp35-none-win32.whl在此平台上不受支持。

我的电脑的标签:[['cp37','cp37m','win32'),('cp37','none','win32'),('cp37','none','any'),(' cp3”,“ none”,“ any”),(“ cp36”,“ none”,“ any”),(“ cp35”,“ none”,“ any”),(“ cp34”,“ none”,“ any'),('cp33','none','any'),('cp32','none','any'),('cp31','none','any'),('cp30' ,'none','any'),('py3','none','win32'),('py37','none','any'),('py3','none','any' ),('py36','none','any'),('py35','none','any'),('py34','none','any'),('py33',' none”,“ any”),(“ py32”,“ none”,“ any”),(“ py31”,“ none”,“ any”),(“ py30”,“ none”,“ any”)]

文件标签可以在文件名中看到。

您可以在点20.0.1和点19.3.1中打印pip debug -v之间的差异吗?

--- /tmp/old.txt    2020-01-21 17:22:10.221211433 +0300
+++ /tmp/new.txt    2020-01-21 17:22:30.725552363 +0300
@@ -1,4 +1,4 @@
-pip version: pip 19.3.1 from /tmp/venv/lib/python3.6/site-packages/pip (python 3.6)
+pip version: pip 20.0.1 from /tmp/venv/lib/python3.6/site-packages/pip (python 3.6)
 sys.version: 3.6.9 (default, Nov  7 2019, 10:44:02) 
 [GCC 8.3.0]
 sys.executable: /tmp/venv/bin/python3
@@ -8,7 +8,11 @@
 sys.platform: linux
 sys.implementation:
   name: cpython
-Compatible tags: 42
+'cert' config value: global
+REQUESTS_CA_BUNDLE: None
+CURL_CA_BUNDLE: None
+pip._vendor.certifi.where(): /tmp/venv/lib/python3.6/site-packages/pip/_vendor/certifi/cacert.pem
+Compatible tags: 41
   cp36-cp36m-manylinux2014_x86_64
   cp36-cp36m-manylinux2010_x86_64
   cp36-cp36m-manylinux1_x86_64
@@ -37,12 +41,11 @@
   cp32-abi3-manylinux2010_x86_64
   cp32-abi3-manylinux1_x86_64
   cp32-abi3-linux_x86_64
-  py3-none-manylinux2014_x86_64
-  py3-none-manylinux2010_x86_64
-  py3-none-manylinux1_x86_64
-  py3-none-linux_x86_64
+  py36-none-manylinux2014_x86_64
+  py36-none-manylinux2010_x86_64
+  py36-none-manylinux1_x86_64
+  py36-none-linux_x86_64
   cp36-none-any
-  cp3-none-any
   py36-none-any
   py3-none-any
   py35-none-any

```差异
-pip版本:c:sdkspython37-32libsite-packagespip(python 3.7)中的pip 19.3.1
+ pip版本:c:sdkspython37-32libsite-packagespip(python 3.7)中的pip 20.0.1
sys.version:3.7.6(tags / v3.7.6:43364a7ae0,2019年12月18日,23:46:00)[MSC v.1916 32位(Intel)]
sys.executable:c:sdkspython37-32python.exe
sys.getdefaultencoding:utf-8
@@ -8,14 +8,21 @@ locale.getpreferredencoding:cp1252
sys.platform:win32
sys.implementation:
名称:cpython
-Config变量'Py_DEBUG'未设置,Python ABI标记可能不正确
-Config变量'WITH_PYMALLOC'未设置,Python ABI标记可能不正确
-兼容标签:14
+'cert'配置值:全局
+ REQUESTS_CA_BUNDLE:无
+ CURL_CA_BUNDLE:无
+ pip._vendor.certifi.where():c:sdkspython37-32libsite-packagespip_vendorcertificacert.pem
+兼容标签:19
cp37-cp37m-win32
+ cp37-abi3-win32
cp37-none-win32
-py3-none-win32
+ cp36-abi3-win32
+ cp35-abi3-win32
+ cp34-abi3-win32
+ cp33-abi3-win32
+ cp32-abi3-win32
+ py37-none-win32
cp37-无任何
-cp3-无-任何
py37-none-any
py3-none-any
py36-none-any

在Windows上类似-输出的标签部分:

--- ".\\pip19.txt"      2020-01-21 14:30:16 +0000
+++ ".\\pip20.txt"      2020-01-21 14:26:54 +0000
@@ -1,9 +1,15 @@
-Compatible tags: 15
+Compatible tags: 21
   cp38-cp38-win_amd64
+  cp38-abi3-win_amd64
   cp38-none-win_amd64
-  py3-none-win_amd64
+  cp37-abi3-win_amd64
+  cp36-abi3-win_amd64
+  cp35-abi3-win_amd64
+  cp34-abi3-win_amd64
+  cp33-abi3-win_amd64
+  cp32-abi3-win_amd64
+  py38-none-win_amd64
   cp38-none-any
-  cp3-none-any
   py38-none-any
   py3-none-any
   py37-none-any

看起来packaging.tags值与pip 19内部使用的版本pip的值不同。主要区别是缺少{py3,cp3}-none-win_amd64 。 这不是bdist_wheel AFAIK生成的标准标签,因此至少影响仅限于设置自定义标签的人员。

规范并没有过多说明像这样的自定义标签是有效的,因此可以说是在“未定义的行为”方面。 尽管这对受此影响的人们没有帮助,但确实表明在标准中更具体将是一件好事。

顺便说一句,我不确定mxnet-1.5.1.post0-py2.py3-none-manylinux1_x86_64.whl到底是什么意思-mxnet的MacOS版本具有特定的ABI设置,为什么manylinux无法构建? Numpy的manylinux版本具有ABI,因此在manylinux工具链中这似乎不是一个普遍的问题。 pyenchant的标签也显得有些奇怪。

mxnet的MacOS版本具有特定的ABI集,为什么manylinux无法构建?

我简要地检查了Linux软件包,看来那里的本机库都没有引用Python符号。 看起来MXNet使用ctypes与本机代码互操作,因此没有ABI是有意义的。

使用pip == 20.0.1安装icc-rt(来自intel-numpy)(2020.0.133)时遇到相同的问题

我简要地检查了Linux软件包,看来那里的本机库都没有引用Python符号。 看起来MXNet使用ctypes与本机代码互操作,因此没有ABI是有意义的。

好。 如果在所有情况下都使用ctypes,那么为什么需要“ manylinux”标签? 实际上,不要花任何时间在这个问题上,我不是Linux专家,所以我可能还是不会遵循答案。

至少,这听起来像应该作为packaging库的问题来提出。 不管pip做什么,如果它们是有效的标记,则应在packaging.tags对其进行支持,并且比此处更好地对应该支持的标记进行一般性讨论。

好。 如果在所有情况下都使用ctypes,那么为什么需要“ manylinux”标签? 实际上,不要花任何时间在这个问题上,我不是Linux专家,所以我可能还是不会遵循答案。

无论如何,我都会回答:方向盘中包含本机Linux库,因此manylinux1标签有意义。

https://github.com/pypa/pip/issues/7620#issuecomment -576743862 @tomasaschan报告了我认为xgboost同一问题,该问题以xgboost-0.90-py2.py3-none-manylinux1_x86_64.whl 。 它似乎还包含本地库,也许是针对JVM的。

@IRDonch谢谢。 我确实遵循了这种解释🙂很有道理。

@jamadden同意,看起来像是同样的问题。

@jamadden我可以在本地做什么来帮助您确定是否相同?

@tomasaschan您可以在此处粘贴pip debug -v的输出吗?

 λ diff pip19.log pip20.log 
1c1
- pip version: pip 19.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
---
+ pip version: pip 20.0.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
11c11,15
- Compatible tags: 42
---
+ 'cert' config value: global
+ REQUESTS_CA_BUNDLE: None
+ CURL_CA_BUNDLE: None
+ pip._vendor.certifi.where(): /usr/local/lib/python3.6/dist-packages/pip/_vendor/certifi/cacert.pem
+ Compatible tags: 41
40,43c44,47
-   py3-none-manylinux2014_x86_64
-   py3-none-manylinux2010_x86_64
-   py3-none-manylinux1_x86_64
-   py3-none-linux_x86_64
---
+   py36-none-manylinux2014_x86_64
+   py36-none-manylinux2010_x86_64
+   py36-none-manylinux1_x86_64
+   py36-none-linux_x86_64
45d48
-   cp3-none-any

 λ cat pip19.log 
pip version: pip 19.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
sys.version: 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0]
sys.executable: /usr/bin/python
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: linux
sys.implementation:
  name: cpython
Compatible tags: 42
  cp36-cp36m-manylinux2014_x86_64
  cp36-cp36m-manylinux2010_x86_64
  cp36-cp36m-manylinux1_x86_64
  cp36-cp36m-linux_x86_64
  cp36-abi3-manylinux2014_x86_64
  cp36-abi3-manylinux2010_x86_64
  cp36-abi3-manylinux1_x86_64
  cp36-abi3-linux_x86_64
  cp36-none-manylinux2014_x86_64
  cp36-none-manylinux2010_x86_64
  cp36-none-manylinux1_x86_64
  cp36-none-linux_x86_64
  cp35-abi3-manylinux2014_x86_64
  cp35-abi3-manylinux2010_x86_64
  cp35-abi3-manylinux1_x86_64
  cp35-abi3-linux_x86_64
  cp34-abi3-manylinux2014_x86_64
  cp34-abi3-manylinux2010_x86_64
  cp34-abi3-manylinux1_x86_64
  cp34-abi3-linux_x86_64
  cp33-abi3-manylinux2014_x86_64
  cp33-abi3-manylinux2010_x86_64
  cp33-abi3-manylinux1_x86_64
  cp33-abi3-linux_x86_64
  cp32-abi3-manylinux2014_x86_64
  cp32-abi3-manylinux2010_x86_64
  cp32-abi3-manylinux1_x86_64
  cp32-abi3-linux_x86_64
  py3-none-manylinux2014_x86_64
  py3-none-manylinux2010_x86_64
  py3-none-manylinux1_x86_64
  py3-none-linux_x86_64
  cp36-none-any
  cp3-none-any
  py36-none-any
  py3-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any
 λ cat pip20.log 
pip version: pip 20.0.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
sys.version: 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0]
sys.executable: /usr/bin/python
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: linux
sys.implementation:
  name: cpython
'cert' config value: global
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /usr/local/lib/python3.6/dist-packages/pip/_vendor/certifi/cacert.pem
Compatible tags: 41
  cp36-cp36m-manylinux2014_x86_64
  cp36-cp36m-manylinux2010_x86_64
  cp36-cp36m-manylinux1_x86_64
  cp36-cp36m-linux_x86_64
  cp36-abi3-manylinux2014_x86_64
  cp36-abi3-manylinux2010_x86_64
  cp36-abi3-manylinux1_x86_64
  cp36-abi3-linux_x86_64
  cp36-none-manylinux2014_x86_64
  cp36-none-manylinux2010_x86_64
  cp36-none-manylinux1_x86_64
  cp36-none-linux_x86_64
  cp35-abi3-manylinux2014_x86_64
  cp35-abi3-manylinux2010_x86_64
  cp35-abi3-manylinux1_x86_64
  cp35-abi3-linux_x86_64
  cp34-abi3-manylinux2014_x86_64
  cp34-abi3-manylinux2010_x86_64
  cp34-abi3-manylinux1_x86_64
  cp34-abi3-linux_x86_64
  cp33-abi3-manylinux2014_x86_64
  cp33-abi3-manylinux2010_x86_64
  cp33-abi3-manylinux1_x86_64
  cp33-abi3-linux_x86_64
  cp32-abi3-manylinux2014_x86_64
  cp32-abi3-manylinux2010_x86_64
  cp32-abi3-manylinux1_x86_64
  cp32-abi3-linux_x86_64
  py36-none-manylinux2014_x86_64
  py36-none-manylinux2010_x86_64
  py36-none-manylinux1_x86_64
  py36-none-linux_x86_64
  cp36-none-any
  py36-none-any
  py3-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any

pip/_vendor/packaging/tags.py
332c332
-         platforms = _platform_tags
---
+         platforms = _platform_tags()
334c334
-         for platform_ in platforms():
---
+         for platform_ in platforms:

似乎解决了问题

这是一个重现我们的错误消息的Dockerfile:

FROM ubuntu:bionic-20190912.1

RUN set -ex \
  && apt-get update \
  && apt-get install -y --no-install-recommends \
  ca-certificates \
  python3 python3-dev python3-pip

RUN pip3 install --upgrade pip==20.0.1 setuptools

RUN echo "xgboost==0.81" >> requirements.txt

RUN pip3 install -r requirements.txt

@jeroendecroos很好-看起来可能是packaging.tags的直接错误(重新使用迭代器,而不是每次都重新创建它)。 您是否可以针对https://github.com/pypa/packaging提出一个问题-如果您可以将其修复为PR,那就更好了!

不知道这是否有帮助,但尝试安装dotnetcore2遇到相同的问题

在macOS上遇到与freetype-py相同的问题: https :

假设明天我可以从目前的头痛中恢复过来,请期待明天的错误修复版本。 :)

我们的自家车轮同样存在问题(pip 20.0.1),一种解决方法是暂时使用pip <20。 希望您即将发布的今天的修复程序能够解决该问题。 谢谢!

好的,#7643应该可以解决问题。 一旦合并(然后回到笔记本电脑),我将发布pip 20.0.2。

如果人们想试一试#7643并确认确实确实为他们解决了这个问题,那就太好了! 要安装它,您可以执行以下操作:

pip install https://github.com/pypa/pip/archive/1cf779c1ea88053c690686571d67826f11463232.zip

如果您尝试过PR,请在此评论中使用👍反应,它对您有用。 :)

好的,所以现在可以解决此问题。 我会稍作发布-请按照#7531。

发布了包含此修复程序的20.0.2。

如果仍然看到类似的内容,请查看#7629(如果您使用的是PyPy)或提出新的问题。 :)

几分钟前发布的pip 20.0.2现在可以再次使用。 感谢大家的及时补丁!

谢谢,我们又重新启动了!

@pradyunsg我可以确认我的Docker repro在20.0.2中已修复。

在这方面做的很棒,非常感谢(我们所有人)! ❤️

有回归

ModuleNotFoundError: No module named 'pip._internal.download'

@afabiani是否可以提供完整的追溯信息以及如何复制的说明? 在新一期杂志中,这似乎与本期主题无关。

哦,我看到您在#7645做过

谢谢! 这是一个不相关的问题,是由于不支持使用pip引起的,而不是pip 20.0.2中引入的错误/回归。 我看到@pfmoore在此有更详细的响应,因此让我们对该问题进行进一步讨论。

赶在星期五晚些时候到今天早上上班,发现它已经修复并发布了-感谢所有参与使修复尽快完成的人! :D

嘿! 此修复程序(20.0.2)实际上没有解决我的问题。 任何人都知道导致此问题的原因是什么?

pip安装工件-密钥
查看索引:https: //pypi.org/simple、PRIVATE_PACKAGE_REFERENCE
收集工件密钥
正在下载artifacts_keyring-0.2.9-py2.py3-none-any.whl(4.8 MB)
|████████████████████████████████|| 4.8 MB 2.5 MB /秒
已满足要求:/usr/local/lib/python3.7/site-packages中的keyring> = 16.0(来自artifacts-keyring)(21.1.0)
已满足要求:/usr/local/lib/python3.7/site-packages中的请求> = 2.20.0(来自artifacts-keyring)(2.22.0)
错误:找不到满足dotnetcore2要求的版本。 sys_platform!=“ win32”和python_version> =“ 3.0”(来自artifacts-keyring)(来自ver
sions:无)
错误:找不到dotnetcore2的匹配分发; sys_platform!=“ win32”和python_version> =“ 3.0”(来自artifacts-keyring)

如果仍然看到类似的内容,请查看#7629(如果您使用的是PyPy)或提出新的问题。 :)

请提出新的问题。

此页面是否有帮助?
0 / 5 - 0 等级