我最近在尝试发布新版本的 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 令牌并将其用于身份验证