Я пытаюсь установить собственный пакет для своего проекта, используя pip install
. В проекте используется setuptools
для создания файла .whl
.
При попытке установить pip, как показано ниже, я получаю сообщение об ошибке: Invalid requirement
.
pip install target/custom_utils-2.0.0_SNAPSHOT-py3-none-any.whl
Ошибка:
ERROR: Invalid requirement: 'custom_utils==2.0.0_SNAPSHOT': Expected end or semicolon (after version specifier)
custom_utils==2.0.0_SNAPSHOT
~~~~~~~^
Эта версия нарушает PEP 440, но setuptool==65.5.1
все же смогла с этим справиться. Самое странное, что это работало до вчерашнего дня. Я не уверен, изменилось ли что-то за ночь.
Возможно, проблема в пипе. Недавно вышел выпуск, в котором удалена поддержка нестандартных спецификаторов версий. Попробуйте закрепить пункт на pip<24
.
См. https://pip.pypa.io/en/stable/news/#b1-2024-05-06
Удалите поддержку устаревших версий и спецификаторов зависимостей.
Пакеты с несовместимыми со стандартами версиями или спецификаторами зависимостей теперь игнорируются преобразователем. Уже установленные пакеты с несовместимыми со стандартами версиями или спецификаторами зависимостей необходимо удалить перед их обновлением.
Если вы контролируете схему версии custom_utils
, то вы можете заменить _
на +
, и pip будет более терпим к тому, что идет после плюса. Например: custom_utils==2.0.0+SNAPSHOT
будет разрешено. В частности, бит после плюса может содержать любые буквы ASCII [a-zA-Z]
, цифры [0-9]
или точку .
и не должен начинаться или заканчиваться точкой. например. 2.0.0+SNAPSNOT.
не разрешили бы, а 2.0.0+SNAP.SHOT
бы. Дополнительную информацию см. https://packaging.python.org/en/latest/specifications/version-specifiers/#local-version-identifiers.
Да, это проблема с пипом, в недавнем выпуске удалена поддержка нестандартных спецификаторов версий. Спасибо
Эта версия нарушает PEP 440, setuptool==65.5.1 все еще смог справиться с этим. Но в setuptool==66.0.0 это изменение:
v66.0.0 15 января 2023 г.
Критические изменения #2497: Убрана поддержка версий, не соответствующих PEP 440. Среды, содержащие пакеты с несоответствующими версиями, могут выйти из строя или пакеты могут быть не распознаны.
Источник - документация по setuptools
Единственное, что могу посоветовать, это использовать setuptools версии < 66.0.0.
2.0.0_SNAPSHOT
не похоже на допустимое имя. Также возможноpip install --upgrade setuptools wheel
.