有关发布和版本控制 PyPi 包的更新指南



我最近在尝试发布新版本的 PyPi 包时遇到了一个问题。

更新源代码(并为发布准备文件)后,我找不到有关如何将新版本(例如,请参阅此内容)发布到 PyPi 的任何更新指南。

大多数指南都引用了setup.py,现在已被pyproject.toml取代。

因此,从Windows(IDE:VScode)开始,旧的命令

py setup.py sdist bdist_wheel

不再工作了。用pyproject.toml替换setup.py时 我收到以下错误:

File "C:Usersgenericpyproject.toml", line 3
build-backend = "hatchling.build"
^
SyntaxError: cannot assign to operator

我的pyproject.toml像任何通用pyproject.toml文件一样构建

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.2"
authors = [
{ name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

我知道 Python 包指南。但是,他们解释了如何使用git发布,我想要旧方法的等效项。

正如用户@phd指出的那样,那里有一些指南。但是,这些只提到了如何将新包上传到 PyPi,而不是新的发行版。此外,它们不会使用 API 令牌处理上传。我应该创建一个新的 API 令牌吗?旧令牌不再可访问,但新令牌返回以下错误:

ERROR    HTTPError: 403 Forbidden from https://test.pypi.org/legacy/
Invalid or non-existent authentication information. See https://test.pypi.org/help/#invalid-auth for more information.

已解决:

有关参考,请参阅以下打包库教程:上传 #313 时遇到问题。 我也对是使用twine upload --repository testpypi dist*来更新包还是twine upload --repository-url URL dist/*更新现有包感到困惑。我不清楚有关该问题的文档。此外,我在使用 API 令牌进行身份验证时遇到了各种问题。对我有用的是以下建议:

存储库的正确 URL 是https://upload.pypi.org/legacy/https://test.pypi.org/legacy/.

因此,如果您希望使用API 令牌更新现有包:

  • pyproject.toml中的项目版本从例如0.0.1更改为0.0.2
  • -m build
  • -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
  • 在 PyPi 上生成项目范围的 API 令牌并将其用于身份验证

最新更新