PyPI отказывается от значения версии

#python #pip #upload #pypi

#python #pip #загрузка #pypi

Вопрос:

Я пытаюсь загрузить пакет в pypi и получаю ошибку:

‘4.5.1-2021.2-0 ‘ — недопустимое значение для версии. Ошибка: начинается и заканчивается буквой или цифрой, содержащей только цифры ASCII и ‘.’, ‘_’ и ‘-‘. См. https://packaging.python.org/specifications/core-metadata для получения дополнительной информации.

Я знаю, что мое имя не соответствует стандарту PEP440, но оно соответствует формату значения PyPI. Странно, что он заменяет _ на -

От setup.py :

 setuptools.setup(
    name="opencv-python-inference-engine",
    version="4.5.1_2021.2_0",
...
 

Имя файла пакета: opencv_python_inference_engine-4.5.1_2021.2_0-py3-none-manylinux1_x86_64.whl

Что я делаю неправильно, кроме соответствия PRP440?

UPD: ‘4.5.1-2021.2’ также генерирует ошибку, однако она выглядит совместимой с PEP440 (разделители перед выпуском).

Комментарии:


1. Вы пишете «Я знаю, что мое имя не PEP440». в то время как в документах PyPI указано «Это поле должно быть в формате, указанном в PEP 440» , вы видите проблему? 🙂

2. @DeepSpace Ну, это выдает ошибку с другим текстом, но я понимаю вашу точку зрения 🙂 Я попробовал ‘4.5.1-2021.2’, он также выдает ошибку, однако он выглядит совместимым с PEP440 (разделители перед выпуском).

Ответ №1:

Ваша версия не совместима с PEP440. Предварительные версии должны включать предварительную «фазу» (альфа, бета, релиз-кандидат).

Сегмент предварительного выпуска состоит из алфавитного идентификатора для этапа предварительного выпуска, а также неотрицательного целого значения. Предварительные версии для данного выпуска упорядочиваются сначала по фазе (альфа, бета, релиз-кандидат), а затем по числовому компоненту в пределах этой фазы.

 X.YaN   # Alpha release
X.YbN   # Beta release
X.YrcN  # Release Candidate
X.Y     # Final release
 

Для alpha это означает букву a , для beta это означает букву b , а для Release Candidate вам нужно rc . Измените тире на a или b , и я думаю, это сработает.

Комментарии:

1. хм, могу ли я объединить в одном значении релиза как major.minor.micro, так и релиз на основе даты?

2. Я не уверен, что понимаю? Есть несколько способов включить управление версиями на основе календаря, например, в — YY.MM.DD.

3. Да, например, могу ли я включить управление версиями календаря и X.Y.Z? Например, X.Y.Z-YY.MM.DD

4. Тогда я мог бы пойти с X.Y.ZcYYMMDD. Причина, по которой это работает, заключается в том, что «c» разрешено PEP440 в качестве псевдонима для «rc», но в этом случае вы можете сказать людям, что это на самом деле календарь. Недостатком этого является то, что он ограничивает вас одним выпуском в день, что может быть проблемой при выпуске экстренных исправлений.

5. @banderlog013 Если вы хотите сделать ад зависимостей немного «менее адским» для пользователей вашего пакета, пожалуйста, придерживайтесь X.Y.Z (удалите часть с датой) и следуйте semver