build-details.json v1.0

规范

https://packaging.pythonlang.cn/en/latest/specifications/schemas/build-details-v1.0.schema.json

build-details.json — 包含 Python 安装构建详情的静态描述文件

类型

对象

属性

  • schema_version

模式版本。

这是一个遵循 <MAJOR>.<MINOR> 格式的字符串,其中 <MAJOR><MINOR> 是未填充的数字,代表版本的 部分。版本可以通过将版本字符串解释为小数进行算术比较。

对于此规范版本,此值是常量,必须1.0

此模式的未来版本必须使用更高的版本号。此模式的未来版本不得使用与其他模式版本相同的主版本组件,除非其规范被认为是向后兼容的——它不能以解释数据语义不同,或在新规范下有效的数据在旧规范下无效的方式更改或扩展当前规范的任何部分,附加属性(由 additionalProperties 引起的错误)除外。

类型

字符串

常量

1.0

  • base_prefix

Python 安装的基本前缀。

可以是绝对路径,也可以是相对于包含此文件的目录的路径。

类型

字符串

示例

/usr

../..

  • base_interpreter

基本安装的 Python 解释器路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

如果安装提供了解释器可执行文件,则此字段必须存在。

类型

字符串

示例

/usr/bin/python

bin/python

  • 平台

系统平台字符串。

此字段应该等同于 sysconfig.get_platform()

类型

字符串

示例

linux-x86_64

  • 语言

包含与 Python 语言规范相关的详细信息的对象。

类型

对象

属性

  • 版本

Python 语言版本的字符串表示形式 — 一个仅包含“主”和“次”部分的版本字符串。

此字段应该等同于 sysconfig.get_python_version()

类型

字符串

示例

3.14

  • version_info

格式为 sys.version_info 的对象。

此部分应该等同于 sys.version_info

类型

对象

示例

主版本

3

次版本

14

微版本

1

发布级别

最终版

序列号

0

属性

  • 主版本

类型

数字

  • 次版本

类型

数字

  • 微版本

类型

数字

  • 发布级别

类型

字符串

枚举

alpha, beta, candidate, final

  • 序列号

类型

数字

additionalProperties

False

additionalProperties

False

  • 实现

包含与 Python 实现相关的详细信息的对象。

此部分应该等同于 sys.implementation。它遵循 PEP 421 中定义的规范,这意味着除了所需的键之外,还可以存在特定于实现的键,但必须以_下划线为前缀。

类型

对象

属性

  • 名称

Python 实现的小写名称。

类型

字符串

示例

cpython

pypy

  • 版本

格式为 sys.version_info 的对象,包含实现版本。

类型

对象

示例

主版本

3

次版本

14

微版本

1

发布级别

最终版

序列号

0

主版本

7

次版本

3

微版本

16

发布级别

最终版

序列号

0

属性

  • 主版本

类型

数字

  • 次版本

类型

数字

  • 微版本

类型

数字

  • 发布级别

类型

字符串

枚举

alpha, beta, candidate, final

  • 序列号

类型

数字

additionalProperties

False

additionalProperties

True

  • abi

包含与 ABI 相关的详细信息的对象。

类型

对象

属性

  • 标志

构建配置标志,用于计算扩展后缀。

标志必须按照它们在扩展后缀中出现的顺序定义。

类型

数组

示例

t

d

  • extension_suffix

针对当前实现版本构建的扩展所使用的后缀。

如果 Python 实现支持扩展,则此字段必须存在,否则此条目将缺失。

类型

字符串

示例

.cpython-314-x86_64-linux-gnu.so

  • stable_abi_suffix

针对稳定 ABI 构建的扩展所使用的后缀。

如果 Python 实现具有稳定的 ABI 扩展后缀,则此字段必须存在,否则此条目将缺失。

类型

字符串

示例

.abi3.so

additionalProperties

False

  • 后缀

按类型分组的有效模块后缀。

如果 Python 安装支持导入外部文件,则此部分必须存在,并且应该等同于 importlib.machinery.*_SUFFIXES 属性。

此外,如果 Python 实现提供除了 importlib.machinery 模块中列出的扩展类型之外的其他扩展类型,它们可以为其添加一个子部分。

类型

对象

示例

.py

字节码

.pyc

优化字节码

.pyc

调试字节码

.pyc

扩展

.cpython-313-x86_64-linux-gnu.so

.abi3.so

.so

  • libpython

包含与 libpython 库相关的详细信息的对象。

如果 Python 安装提供了 libpython 库,则此部分必须存在,否则此部分将缺失。

类型

对象

属性

  • 动态

动态 libpython 库的路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

如果 Python 安装提供了动态 libpython 库,则此字段必须存在,否则此条目将缺失。

类型

字符串

示例

/usr/lib/libpython3.14.so.1.0

lib/libpython3.14.so.1.0

  • dynamic_stableabi

用于稳定 ABI 的动态 libpython 库的路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

如果 Python 安装提供了针对稳定 ABI 的动态 libpython 库,则此字段必须存在,否则此条目将缺失。

如果此键存在,则 dynamic必须设置。

类型

字符串

示例

/usr/lib/libpython3.so

lib/libpython3.so

  • 静态

静态 libpython 库的路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

如果 Python 安装提供了静态 libpython 库,则此字段必须存在,否则此条目将缺失。

类型

字符串

示例

/usr/lib/python3.14/config-3.14-x86_64-linux-gnu/libpython3.14.a

lib/python3.14/config-3.14-x86_64-linux-gnu/libpython3.14.a

  • 链接扩展

针对动态 libpython 构建的扩展是否应该链接到它?

如果 Python 安装提供了动态 libpython 库,则此字段必须存在,否则此条目将缺失。

类型

布尔值

additionalProperties

False

  • c_api

包含与 Python C API 相关的详细信息的对象。

如果 Python 实现提供了 C API,则此部分必须存在,否则此部分将缺失。

类型

对象

属性

  • 头文件

C API 头文件的路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

类型

字符串

示例

/usr/include/python3.14

include/python3.14

  • pkgconfig_path

pkg-config 定义文件的路径。

可以是绝对路径,也可以是相对于 base_prefix 的路径。

如果 Python 实现提供了 pkg-config 定义文件,则此字段必须存在,否则此部分将缺失。

类型

字符串

示例

/usr/lib/pkgconfig

lib/pkgconfig

additionalProperties

False

  • 任意数据

包含额外任意数据的对象。

这旨在用作应急措施,以包含此规范未涵盖的任何相关数据。实现可以选择在此部分中提供哪些数据。

类型

对象

additionalProperties

True

additionalProperties

False

示例

{
  "schema_version": "1.0",
  "base_prefix": "/usr",
  "base_interpreter": "/usr/bin/python",
  "platform": "linux-x86_64",
  "language": {
    "version": "3.14",
    "version_info": {
      "major": 3,
      "minor": 14,
      "micro": 0,
      "releaselevel": "alpha",
      "serial": 0
    }
  },
  "implementation": {
    "name": "cpython",
    "version": {
      "major": 3,
      "minor": 14,
      "micro": 0,
      "releaselevel": "alpha",
      "serial": 0
    },
    "hexversion": 51249312,
    "cache_tag": "cpython-314",
    "_multiarch": "x86_64-linux-gnu"
  },
  "abi": {
    "flags": ["t", "d"],
    "extension_suffix": ".cpython-314-x86_64-linux-gnu.so",
    "stable_abi_suffix": ".abi3.so"
  },
  "suffixes": {
    "source": [".py"],
    "bytecode": [".pyc"],
    "optimized_bytecode": [".pyc"],
    "debug_bytecode": [".pyc"],
    "extensions": [".cpython-314-x86_64-linux-gnu.so", ".abi3.so", ".so"]
  },
  "libpython": {
    "dynamic": "/usr/lib/libpython3.14.so.1.0",
    "dynamic_stableabi": "/usr/lib/libpython3.so",
    "static": "/usr/lib/python3.14/config-3.14-x86_64-linux-gnu/libpython3.14.a",
    "link_extensions": true
  },
  "c_api": {
    "headers": "/usr/include/python3.14",
    "pkgconfig_path": "/usr/lib/pkgconfig"
  }
}