Как перезаписать пакет pypi при загрузке из командной строки?
Я хочу, чтобы автоматизировать ошибку процесса загрузки в некоторых случаях python setup.py upload
не удается, потому что на Pypi сервере уже загружена сохраненная версия.
Как я могу заставить его загрузить из скрипта (я знаю, что могу удалить старый вариант, используя веб-интерфейс).
1 ответ
Поздний ответ, но: похоже, все согласны, что нельзя перезаписывать существующие загрузки pypi или повторно загружать фиксированную версию после удаления неработающей версии. Тем не менее, это кажется возможным и официально поддерживается: "номера сборки" - это функция, которую никто никогда не использовал и не помнит, что они существуют, но, похоже, это работает, по крайней мере, для меня.
Хитрость заключается в том, чтобы переименовать файлы по следующему шаблону:
mypackage-0.31.0-py2.py3-none-any.whl
mypackage-0.31.0-1-py2.py3-none-any.whl
mypackage-0.31.0-2-py2.py3-none-any.whl
"-1" или "-2" - это номера сборки. Если pip найдет все эти файлы для одного и того же выпуска, он выберет файл с наибольшим номером сборки. Это также работает, если он находит только один файл с ненулевым номером сборки, поэтому вы можете использовать его после удаления оригинала.
(Это очень быстро упоминается в документации по адресу https://www.python.org/dev/peps/pep-0427/#file-name-convention, но я бы не догадался о его использовании, если бы Дэниел Холт не указал на это мне. Спасибо, Даниэль!)
Я понятия не имею, почему в Интернете так много людей, убежденных, что это невозможно. Я сам узнал об этом только вчера и подумал, что должен попытаться передать эту информацию.
Вставьте сюда обычное предупреждение о том, что нельзя злоупотреблять этой функцией. Типичный пример того, когда я думаю, вам следует использовать это, - это когда одно из колес было плохо построено, и вам нужно заменить его на правильно построенное колесо из тех же источников.
Вот фактический ответ, а не только я добавляю больше понтификации в комментарии. Нашел эту ветку:
https://www.reddit.com/r/Python/comments/35xr2q/howto_overwrite_package_when_reupload_to_pypi/
Это относится к этому:
http://comments.gmane.org/gmane.comp.python.distutils.devel/22739
Сказать, что это невозможно сделать.
Также обратите внимание на комментарий в ветке reddit о чтении semver.org и увеличении микро версии для исправлений.