You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python包中获取全部同名元数据(以project.urls为例)

解决importlib.metadata获取所有Project-URL的问题

当你通过importlib.metadata读取包元数据时,直接用["Project-URL"]只能拿到第一个URL条目——这是因为元数据对象的索引操作仅返回同名字段的第一个值。要获取全部URL,需要使用get_all()方法:

代码实现

from importlib import metadata

# 获取目标包的所有Project-URL条目
url_entries = metadata.metadata("pandas").get_all("Project-URL")

# 将条目解析为结构化字典
url_dict = {}
for entry in url_entries:
    # 按", "拆分一次,避免URL中含逗号导致解析错误
    name, url = entry.split(", ", 1)
    url_dict[name] = url

print(url_dict)
# 输出示例:
# {'homepage': 'https://pandas.pydata.org', 'documentation': 'https://pandas.pydata.org/docs/', 'repository': 'https://github.com/pandas-dev/pandas'}

原理说明

setuptools构建包时,会把pyproject.toml里[project.urls]下的每一组键值对,转换为独立的Project-URL元数据字段。metadata.get_all("Project-URL")会返回所有这些字段的列表,每个元素格式为"名称, 链接",拆分后就能得到规整的字典结构。

内容的提问来源于stack exchange,提问作者Pierrick Rambaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:35:57