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

构建Python包时如何指定核心元数据版本(Metadata-Version)为2.1

构建Python包时如何指定核心元数据版本(Metadata-Version)为2.1

我完全懂你的处境——仓库不支持2.2版本的元数据,又没权限升级,只能硬着头皮把元数据版本降到2.1对吧?别着急,我给你整理了几种可行的方案,覆盖常用的构建工具,你按需选就行:

方法一:用Setuptools(支持setup.py或pyproject.toml)

1. 传统setup.py方式

如果你的项目还在用setup.py,直接在setup()函数里加metadata_version参数就行,非常直接:

from setuptools import setup

setup(
    name="你的包名",
    version="0.1.0",
    metadata_version="2.1",  # 这里明确指定元数据版本
    # 其他包配置:比如author、description、packages之类的...
)

2. 现代pyproject.toml方式

要是你用的是pyproject.toml配合Setuptools,需要在配置里标记metadata_version为动态字段,然后单独指定:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "你的包名"
version = "0.1.0"
dynamic = ["metadata_version"]  # 告诉Setuptools这个字段是手动指定的

[project.metadata]
metadata_version = "2.1"  # 在这里设置目标元数据版本

方法二:用Hatch构建的配置

你之前翻Hatch文档没找到,其实它有专门的配置项控制元数据版本。在项目的pyproject.toml里添加(或修改)[tool.hatch.metadata]部分:

[tool.hatch.metadata]
core_version = "2.1"

这个配置会强制Hatch生成2.1版本的核心元数据,替代默认的2.2。

验证是否生效

构建完包之后,建议用twine check命令确认一下元数据版本是否正确,避免白忙活:

twine check dist/*

如果没问题,输出会显示检查通过;要是你想确认具体版本,也可以解压生成的wheel包,查看里面的METADATA文件,第一行就是Metadata-Version: 2.1。

额外注意事项

有些2.2版本新增的元数据字段(比如某些高级动态配置项),即使你指定了2.1版本,构建工具可能还是会自动升级元数据版本来兼容。所以尽量用基础的元数据字段,别用太新的特性,避免触发这种自动升级。

备注:内容来源于stack exchange,提问作者user91

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:18:09