Python 我应该如何向PyPI注册一个包?

Python 我应该如何向PyPI注册一个包?,python,pypi,Python,Pypi,在的文档中,它表示将twine与存储库一起使用=https://upload.pypi.org/legacy/.pypirc中的。现在,从最后一点来看,这个URL既是一种传统的做事方式,也是一种不存在的方式: $ twine register dist/scriptdoctest-0.1-py2.py3-none-any.whl Registering package to https://upload.pypi.org/legacy/ Enter your username: MyUserN

在的文档中,它表示将
twine
存储库一起使用=https://upload.pypi.org/legacy/
.pypirc
中的
。现在,从最后一点来看,这个URL既是一种传统的做事方式,也是一种不存在的方式:

$ twine register dist/scriptdoctest-0.1-py2.py3-none-any.whl 
Registering package to https://upload.pypi.org/legacy/
Enter your username: MyUserName
Enter your password: 
Registering scriptdoctest-0.1-py2.py3-none-any.whl
HTTPError: 410 Client Error: This API is no longer supported, instead simply upload the file. for url: https://upload.pypi.org/legacy/
现在使用
scriptdoctest.egg info/PKG-info
是注册软件包的首选和唯一方法,还是使用
twine
或其他CLI工具可以实现这一点?

实际上提供了所有必要的信息

TL;博士
  • 创建有效的项目,尤其是
    setup.py
  • python setup.py sdist bdist\u wheel
  • 确保您有一个正确的
    ~/.pypirc
    ,其中包含来自的凭据
  • twine upload dist/*
    -不再需要/可能注册
  • 我的
    .pypirc
    如下所示:

    [distutils]
    index-servers =
      pypi
      pypitest
    
    [pypi]
    repository=https://pypi.python.org/pypi
    username=Martin.Thoma
    password=[your password]
    
    [pypitest]
    repository=https://testpypi.python.org/pypi
    username=Martin.Thoma
    password=[your password]
    

    使用此存储库URL,它将工作
    repository=https://upload.pypi.org/legacy/


    我想文档有点过时了,因为在包装方面已经发生了很多事情,包括搬到仓库:

    遵循Martin Thoma的答案,现在似乎不太受欢迎()

    建议使用新的URL“” 或保留未指定的URL并允许选择

    因此,您的
    .pypirc
    应该如下所示:

    [pypi]
    username=[your username]
    password=[your password]
    
    [pypitest]
    username=[your username]
    password=[your password]
    
    接下来,请执行以下步骤:

  • 为项目创建有效的
    setup.py
  • 创建控制盘和距离:

    python setup.py sdist bdist_wheel
    
  • 为了避免重新输入密码,您可以使用来自的凭据填充
    ~/.pypirc

  • 现在upload命令负责注册,因此该命令现在是:

    twine upload dist/*
    

  • 嗯,很有趣。我不知道Python开始正式推荐使用Twine。捆绳是新的(不是旧的)。有关捆绳的好处,请参阅。如果您不想获得这些好处(或者您拥有最新版本的Python),那么可以随意使用
    Python setup.py upload
    ,这是多年来的传统方法。
    Python setup.py upload
    (或者我是否只尝试了
    注册
    )也给了我一个
    http410:这个API不再受支持了
    。我只是不想拥有一个
    .pypirc
    吗?啊,我刚刚重读了你的作品。我错过了PyPI URL中的“遗留”部分。如果不使用绳线,则是,只需删除
    .pypirc
    文件即可。我自己从来没用过。据我所知(抱歉没有参考资料),他们目前正在更新PyPI。我猜你正在阅读预期的文档,但实际上还没有生效。@Anaphory我今天上传了一个软件包,也许你会发现一些有用的信息。my
    .pypirc
    具有
    存储库=https://pypi.python.org/pypi
    而不是
    存储库=https://pypi.python.org/legacyi
    。我没有使用
    twine
    ,当我使用
    python setup.py register-r pypi
    注册我的包时,我得到了相同的
    服务器响应(410):不再支持此API,而只是上传文件。
    response。我跳过了直接使用
    python setup.py sdist upload-r pypi
    。我只是在猜测,你能在更改
    .pypirc
    后直接尝试使用
    twine upload dist/*
    吗?我想你现在已经解决了这个问题?你想写一个答案吗?只有当我把twine命令指向我的pypirc文件时,这才对我有效:
    twine upload--config file=.pypirc dist/*
    你的pypirc在哪里?啊!它应该在
    ~/.pypirc
    ..吗。。。?我把它放在这个项目的
    setup.py
    的同一个目录中。你可以更改它,但这是默认位置。@Akelian,我相信我们只能忽略真实PyPI的url,但我们仍然必须指定测试PyPI的url,否则工具怎么知道要使用哪个url?