我怎么能把包注册到PyPI?

Ana*_*ory 11 python pypi

打包和分发Python包的文档中,它说要twinerepository = https://upload.pypi.org/legacy/in 一起使用.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/
Run Code Online (Sandbox Code Playgroud)

现在使用scriptdoctest.egg-info/PKG-INFO注册包的首选和唯一方法,还是有其他方法来执行此操作twine或其他一些CLI工具?

Mar*_*oma 7

shttps://packaging.python.org/distributing/实际上提供了所有必要的信息.

TL; DR

  1. 特别是创建一个有效的项目 setup.py
  2. python setup.py sdist bdist_wheel
  3. 确保您~/.pypirc的凭据来自https://pypi.python.org/pypi
  4. 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]
Run Code Online (Sandbox Code Playgroud)


Ake*_*ian 5

以下 Martin Thoma 的答案现在似乎已被弃用(此处)。

建议使用新的 URL“ https://upload.pypi.org/legacy/ ”或不指定 URL 并允许 twine 选择。

所以你的.pypirc应该如下所示:

[pypi]
username=[your username]
password=[your password]

[pypitest]
username=[your username]
password=[your password]
Run Code Online (Sandbox Code Playgroud)

接下来请按照以下步骤操作:

  1. setup.py为您的项目创建一个有效的。
  2. 创建轮子和距离:

    python setup.py sdist bdist_wheel
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为了避免重新输入密码,您可以使用pypi~/.pypirc中的凭据 填充。

  4. 现在上传命令负责注册,因此命令现在是:

    twine upload dist/*
    
    Run Code Online (Sandbox Code Playgroud)