Пип: недопустимое требование

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

peps.python.org/pep-04402.0.0_SNAPSHOT не похоже на допустимое имя. Также возможно pip install --upgrade setuptools wheel.
Doot 23.06.2024 14:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
407
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Возможно, проблема в пипе. Недавно вышел выпуск, в котором удалена поддержка нестандартных спецификаторов версий. Попробуйте закрепить пункт на 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.

Да, это проблема с пипом, в недавнем выпуске удалена поддержка нестандартных спецификаторов версий. Спасибо

OnTheWheels 24.06.2024 09:15

Эта версия нарушает PEP 440, setuptool==65.5.1 все еще смог справиться с этим. Но в setuptool==66.0.0 это изменение:

v66.0.0 15 января 2023 г.

Критические изменения #2497: Убрана поддержка версий, не соответствующих PEP 440. Среды, содержащие пакеты с несоответствующими версиями, могут выйти из строя или пакеты могут быть не распознаны.

Источник - документация по setuptools

Единственное, что могу посоветовать, это использовать setuptools версии < 66.0.0.

Другие вопросы по теме