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”字段并将其分成适当的部分,但如果可以避免的话就更好了。)