我想在某些情况下自动化上传过程错误,python setup.py upload
因为 pypi 服务器已经上传了保存版本。
如何强制它从脚本上传(我知道我可以使用 Web 界面删除旧变体)。
我想在某些情况下自动化上传过程错误,python setup.py upload
因为 pypi 服务器已经上传了保存版本。
如何强制它从脚本上传(我知道我可以使用 Web 界面删除旧变体)。
一个迟到的答案,但是:似乎每个人都同意您不能覆盖现有的 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的文档中很快就提到了,但如果没有 Daniel Holth 指出它,我不会猜到它的用途我。谢谢丹尼尔!)
我不知道为什么互联网上有这么多人相信它是做不到的。我自己昨天才知道这件事,并认为我应该尝试传递这些信息。
在此处插入关于不要滥用该功能的常见警告。我认为您应该使用它的一个典型示例是在其中一个轮子制造不良并且您需要用来自相同来源的正确制造的轮子替换它之后
这是一个实际的答案,而不仅仅是我在评论中添加了更多的自以为是。找到这个线程:
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 和增加补丁的微型版本的评论。