从命令行上传时如何覆盖pypi包?

时间:2014-01-11 16:11:02

标签: distutils pypi distutils2

我想在python setup.py upload失败的情况下自动化上传过程错误,因为pypi服务器已经上传了保存版本。

如何从脚本强制上传(我知道我可以使用网络界面删除旧版本)。

2 个答案:

答案 0 :(得分:2)

一个迟来的答案,但是:似乎每个人都同意您不能覆盖现有的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向我指出它,我不会猜到它的用处。谢谢Daniel!)

我不知道为什么互联网上有这么多人坚信它无法做到。我本人昨天才了解到这一点,并认为我应该尝试传递这些信息。

在此处插入有关不滥用该功能的常规警告。我认为您应该使用此示例的一个典型示例是在一个轮子的制造不当之后,您需要用相同来源的正确制造的轮子替换它。

答案 1 :(得分:0)

这是一个真正的答案,而不仅仅是我在评论中添加了更多的话语。找到这个帖子:

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并增加补丁的微版本的评论。