通过轮重用以优化 distutils-r1.eclass

主要观点:昨天启用了新的 distutils-r1.eclass 优化——轮子重用,可使 eclass 为所有 Python 实现构建一个或两个轮子并安装,更接近 pip 行为,能加快多解释器构建速度,尤其对纯 Python 包和稳定 ABI 包有效,同时介绍了该优化的一些设计考虑和实现细节。
关键信息:

  • 纯 Python 轮子重用:优先使用纯 Python 轮子,若有扩展则忽略,存在错过优化风险。
  • 稳定 ABI 轮子重用:可避免重复构建相同 C 或 Rust 代码,本地构建时可忽略平台和 ABI 标签,需注意仅 CPython 支持稳定 ABI。
  • 单个包多个轮子:将 DISTUTILS_WHEELS 变量转换为关联数组,根据目录匹配重用轮子。
    重要细节:
  • 未启用优化时,eclass 会为每个启用的 Python 实现构建单独轮子并安装。
  • 对于多个解释器构建,纯 Python 包不再多次启动 setuptools,稳定 ABI 包不必多次构建相似扩展。
  • 代码在 distutils-r1.eclass 中实现,启用前已使用 2 个月未发现问题,且 eclass 会验证 Python 包安装文件内容是否一致。
阅读 4
0 条评论