【问题标题】:How to upload new versions of project to PyPI with twine?如何使用 twine 将新版本的项目上传到 PyPI?
【发布时间】:2019-01-31 15:15:21
【问题描述】:

我已将我的 Python 包上传到 PyPI。 但是现在我制作了我的包的新版本,需要上传它。 我试图取得与第一次上传包时相同的进展。 但是给我这个错误:

HTTPError: 400 Client Error: File already exists. See https://pypi.org/help/#file-name-reuse for url: https://upload.pypi.org/legacy

现在,如何上传新版本没有任何错误?!

【问题讨论】:

  • 我需要删除现存的./dist 来上传我的新版本

标签: python python-3.x package pypi twine


【解决方案1】:

您需要更改版本号。

【讨论】:

    【解决方案2】:

    PyPI 不允许重复使用分发文件名(项目名称 + 版本号 + 分发类型)。

    这可确保给定项目的给定版本的给定分发将始终解析为同一个文件,并且不会在某一天被项目维护者或恶意方偷偷更改(只能将其删除)。

    您需要将版本号更改为您之前未上传到 PyPI 的版本号。

    您没有提及您是如何上传分发的,但如果您使用的是twine,那么您也有可能尝试重新上传之前上传的分发。要解决此问题,您可以这样做:

    $ twine upload --skip-existing dist/*
    

    【讨论】:

    • 谢谢,救了我的命:)
    • 哦,我明白了,我需要删除我文件夹中的旧dist....然后就没有这样的错误消息了。
    【解决方案3】:

    由于以下原因可能会出现该错误:

    • 没有更改您在setup.py 中的版本
    • 没有删除你之前的 dist 文件

    解决方案:

    • 更改setup.py 中的版本号。
    • 再次运行安装文件。 python setup.py bdist_wheel.
    • 仅上传该 dist 文件或运行 twine(如果使用)。 twine upload --skip-existing dist/*

    正如@dustin所说,同名的dist文件不能再次上传。

    【讨论】:

      【解决方案4】:

      在运行之前确保你的 dist 目录是空的

      python setup.py sdist
      

      【讨论】:

        【解决方案5】:

        错误似乎源于命令:

        twine upload --repository-url https://test.pypi.org/legacy/ dist/*
        reusing the previous package version.
        

        要解决这个问题,试试这个:

        twine upload --skip-existing --repository-url https://test.pypi.org/legacy/ 
        dist/*
        

        【讨论】:

        • 这是正确答案(与其他答案一样)。如果您在与新版本相同的目录中构建了以前的版本,则更新版本号无济于事,因为 twine 会尝试上传在该 (dist) 文件夹中找到的所有版本。
        【解决方案6】:

        另一种没人提到的方法是提供明确的文件名:

        twine upload --repository testpypi --skip-existing dist/myProject-0.1.9-py3-none-any.whl
        

        与其他提议的解决方案相比,这具有优势,并且准确地说:

        • 虽然更新版本号是 twine 上传包的要求,但这并不妨碍程序上传 dist 文件夹中的所有内容,包括以前上传的版本。如果您移出旧版本也没关系,但我不确定可能的影响。
        • 使用--skip-existing选项解决了上述问题,但是所有文件都还在处理中,所以需要时间。

        我确信有更有效的解决方案,但这对我来说已经足够简单了。

        【讨论】:

          猜你喜欢
          • 2018-03-18
          • 1970-01-01
          • 2018-05-15
          • 2017-12-28
          • 2020-04-14
          • 1970-01-01
          • 2017-03-18
          • 2011-06-04
          • 2021-01-20
          相关资源
          最近更新 更多