Pip: «Нет соответствующего распределения» из-за того, что теги колес не совпадают в пункте 20.0

Созданный на 21 янв. 2020  ·  38Комментарии  ·  Источник: pypa/pip

Окружающая обстановка

  • версия пункта: 20.0.1
  • Версия Python: 3.6.9
  • ОС: Ubuntu 18.04

Описание
Похоже, что Pip больше не может устанавливать никакую версию mxnet новее 0.9.5.

Ожидаемое поведение
Он должен уметь. :-) Это работало до пункта 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 ',' нет ',' любой '), (' cp33 ',' none ',' any '), (' cp32 ',' none ',' any '), (' cp31 ',' none ',' любой '), (' cp30 ' , 'none', 'any'), ('py3', 'none', 'win32'), ('py37', 'none', 'any'), ('py3', 'none', 'любой' ), ('py36', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'любой'), ('py33', ' none ',' any '), (' py32 ',' none ',' any '), (' py31 ',' none ',' any '), (' py30 ',' none ',' любой ')]

Теги для файла можно увидеть в имени файла.

Не могли бы вы распечатать разницу между pip debug -v в пункте 20.0.1 и пункте 19.3.1?

--- /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

`` `diff
-pip версия: pip 19.3.1 из c: sdkspython37-32libsite-packagespip (python 3.7)
+ версия pip: pip 20.0.1 из c: sdkspython37-32libsite-packagespip (python 3.7)
sys.version: 3.7.6 (tags / v3.7.6: 43364a7ae0, 18 декабря 2019 г., 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-none-any
- cp3-none-any
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, используемая внутри в pip 19. Основное отличие заключается в отсутствии {py3,cp3}-none-win_amd64 . Это не стандартный тег, сгенерированный bdist_wheel AFAIK, поэтому, по крайней мере, влияние будет ограничено людьми, которые устанавливают пользовательские теги.

В спецификациях ничего не говорится о том, какие настраиваемые теги допустимы, так что это, возможно, относится к области «неопределенного поведения». Хотя это не помогает людям, пострадавшим от этого, это говорит о том, что было бы хорошо быть более конкретным в стандартах.

Кстати, я не совсем уверен, что вообще означает mxnet-1.5.1.post0-py2.py3-none-manylinux1_x86_64.whl - выпуски MacOS mxnet имеют определенный набор ABI, почему сборка manylinux не выполняется? Сборки Numpy manylinux имеют ABI, поэтому это не похоже на общую проблему с набором инструментов manylinux. Теги для pyenchant тоже выглядят немного странно ...

в выпусках mxnet для MacOS есть определенный набор ABI, почему в сборке manylinux нет?

Я кратко проверил пакет Linux, и оказалось, что ни одна из встроенных библиотек не ссылается на символы Python. Похоже, MXNet использует ctypes для взаимодействия с собственным кодом, поэтому отсутствие ABI имеет смысл.

Такая же проблема возникает при установке icc-rt (от intel-numpy) (2020.0.133) с использованием pip == 20.0.1

Я кратко проверил пакет Linux, и оказалось, что ни одна из встроенных библиотек не ссылается на символы Python. Похоже, MXNet использует ctypes для взаимодействия с собственным кодом, поэтому отсутствие ABI имеет смысл.

ХОРОШО. Зачем в таком случае нужен тег manylinux, если он использует ctypes для всего? На самом деле, не тратьте время на этот вопрос, я не эксперт по Linux, поэтому я, вероятно, все равно не буду следовать ответу.

Как минимум, это звучит так, как будто это проблема библиотеки packaging . Независимо от того, что делает pip, если это действительные теги, они должны поддерживаться в packaging.tags , и общее обсуждение того, какие теги должны поддерживаться, вероятно, лучше провести там, чем здесь.

ХОРОШО. Зачем в таком случае нужен тег manylinux, если он использует ctypes для всего? На самом деле, не тратьте время на этот вопрос, я не эксперт по 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

Столкновение с той же проблемой с freetype-py в macOS: https://github.com/rougier/freetype-py/issues/119 ("исправлено" закреплением на 19.3.1)

Ожидайте выпуск исправлений для этого завтра, при условии, что к тому времени я оправлюсь от своей текущей головной боли. :)

Та же проблема с нашими собственными колесами (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 Я могу подтвердить, что моя

Отличная работа, огромное спасибо (от всех нас)! ❤️

Есть регресс

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

@afabiani, не могли бы вы предоставить полную трассировку и инструкции по воспроизведению, пожалуйста? В новом выпуске, поскольку кажется, что это не связано с предметом этого выпуска.

О, я вижу, вы сделали на № 7645

Благодаря! Это не связанная с этим проблема, вызванная неподдерживаемым использованием pip, а не ошибкой / регрессией, появившейся в pip 20.0.2. Я вижу, что @pfmoore ответил более подробно, поэтому давайте продолжим обсуждение этого вопроса.

Заглянул в это поздно в пятницу и пришел на работу сегодня утром, чтобы обнаружить, что он уже исправлен и выпущен - спасибо всем, кто так быстро сделал это исправление! : D

Привет! Это исправление (20.0.2) на самом деле не устранило мою проблему. Кто-нибудь знает, что вызывает эту проблему?

pip install артефакты-брелок
Просмотр индексов: https://pypi.org/simple, PRIVATE_PACKAGE_REFERENCE
Коллекционирование артефактов-брелок
Скачивание artifacts_keyring-0.2.9-py2.py3-none-any.whl (4,8 МБ)
| ████████████████████████████████ | 4,8 МБ 2,5 МБ / с
Требование уже выполнено: keyring> = 16.0 в /usr/local/lib/python3.7/site-packages (из artifacts-keyring) (21.1.0)
Требование уже выполнено: запросы> = 2.20.0 в /usr/local/lib/python3.7/site-packages (из 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 рейтинги