通过 setuptools 在 PyPi 上发布作者的正确方法

Guu*_*uuk 5 python setuptools pypi python-packaging pyproject.toml

我目前用来setuptools构建我的 Python 包,并且我已经在我的pyproject.toml文件中以这种方式声明了两位作者:

authors = [
     {name = "X Y", email = "x.y@tt.net"},
     {name = "Z H", email = "z.h@tt.net"},
]
Run Code Online (Sandbox Code Playgroud)

一切正常,我可以在 PyPI 上发布它,但只发布第一作者。我怎样才能显示两位作者。

我尝试使用以下语法

authors = ["X Y <x.y@tt.net>, Z H <z.h@tt.net>"]
Run Code Online (Sandbox Code Playgroud)

但我有以下错误

ValueError: invalid pyproject.toml config: `project.authors[{data__authors_x}]`.
configuration error: `project.authors[{data__authors_x}]` must be object
Run Code Online (Sandbox Code Playgroud)

请注意,我指定:

[build-system]
requires = ["setuptools","numpy","scipy","wheel"]
build-backend = "setuptools.build_meta"
Run Code Online (Sandbox Code Playgroud)

sin*_*roc 3

您的原始符号是正确的:

authors = [
     {name = "X Y", email = "x.y@tt.net"},
     {name = "Z H", email = "z.h@tt.net"},
]
Run Code Online (Sandbox Code Playgroud)

但有些问题是您无法控制的。

一方面,尚不完全清楚如何将其转换为核心元数据符号,这是分发工件(轮)内使用的符号,然后由PyPI提取并显示。

另一方面,构建后端(setuptools包括在内)并没有明确说明它们如何从pyproject.toml符号转换为核心元数据符号,并且它们倾向于默默地选择列表的第一项并忽略后面的项目。

参考