#python #pip #upload #pypi
#python #pip #загрузка #pypi
Вопрос:
Я пытаюсь загрузить пакет в pypi и получаю ошибку:
‘4.5.1-2021.2-0 ‘ — недопустимое значение для версии. Ошибка: начинается и заканчивается буквой или цифрой, содержащей только цифры ASCII и ‘.’, ‘_’ и ‘-‘. См. https://packaging.python.org/specifications/core-metadata для получения дополнительной информации.
Я знаю, что мое имя не соответствует стандарту PEP440, но оно соответствует формату значения PyPI. Странно, что он заменяет _
на -
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