importlib.metadata 似乎无法正确处理 pyproject.toml 文件中的作者字段

问题描述 投票:0回答:0

我在通过

importlib.metadata
检索包的作者元数据信息时遇到问题。

我的包设置如下:

我正在使用 Python 的

setuptools
setup.py
中的一些项目元数据。

pyproject.toml

setup.py

from setuptools import setup
setup()

pyproject.toml

(我认为
[project] name = "myproj" version = "0.1.0" description = "Some description" authors = [ {name = "Some One", email = "[email protected]"}, {name = "Another Person", email = "[email protected]"} ] readme = "README.md" requires-python = ">=3.11" license = {text = "BSD-3-Clause"} [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta"

甚至不是必需的,但为了完整性。)

setup.py

遵循

Python 打包用户指南 - 声明项目元数据
中描述的关键字。 项目本身非常简单:它的结构是

pyproject.toml

myproj/ __init__.py

中,我正在使用

myproj/__init__.py
获取有关包的一些元数据信息。:
importlib.metadata

我使用 
from importlib.metadata import metadata meta = metadata(__package__ or __name__) print(meta['Name']) print(meta['Version']) print(meta['Author-email']) print(meta['Author'])

将软件包安装在 virtualenv 中。

在项目目录之外,但激活了 virtualenv,我运行 Python 并导入包:

pip

打印各种元数据字段:

python -c "import myproj"

这就是问题所在:“作者电子邮件”字段生成完整的
myproj 0.1.0 Some One <[email protected]>, Another Person <[email protected]> None

条目,作为单个字符串,而“作者”字段生成

[project.authors]
.
有没有办法从包中的元数据中获取单个作者(没有他们的电子邮件)?

或者

None

不是最新的包装元数据? (我在 bugs.python.org 上进行了快速搜索,但找不到任何相关内容。)

(当然,我可以手动解析“Author-email”字段并将其分成适当的部分,但如果可以避免的话就更好了。)

python setuptools packaging python-importlib
© www.soinside.com 2019 - 2024. All rights reserved.