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

如何修复“使用PEP 517的包无法构建wheel、无法直接安装”报错

根因定位

报错核心触发点是构建生成的版本号0.0.2.dev1.post1.dev0-g1f5fc90.d20211206不符合PEP 440规范,pip 21.2.4版本已严格执行Metadata 1.2的校验规则,直接阻断了wheel构建流程。
该不合规版本号由项目使用的自动版本生成工具(多为setuptools-scm)输出:当Git工作区存在未提交改动时,工具会自动在基础版本号后追加Git哈希、构建日期等后缀,默认使用连字符-作为分隔符,违反PEP 440版本号格式要求。

永久修复方案
  • 修改自动版本生成规则(最推荐)
    如果你的项目使用setuptools-scm管理版本,直接在setup.cfg中添加配置,将本地版本标识的分隔符改为PEP 440允许的加号+:
[setuptools_scm]
version_scheme = post-release
# 自定义本地版本格式,符合PEP440规范
local_scheme = lambda version: f"+g{version.node}.d{version.time.strftime('%Y%m%d')}{'.dirty' if version.dirty else ''}"

配置完成后执行python -m setuptools_scm验证输出,正常会生成类似0.0.2.dev1.post1.dev0+g1f5fc90.d20211206的合规版本号。

  • tox环境适配方案
    如果仅需要在本地测试阶段规避问题,可在tox.ini的测试环境配置中添加构建参数,允许非PEP440版本的本地安装:
[testenv]
install_command = pip install --no-use-pep517 {opts} {packages}

注意该方案仅适用于本地开发测试,正式发布时必须使用合规版本号。

  • 固定版本号方案
    如果开发阶段不需要自动生成带Git标识的版本,可直接在setup.cfg中硬编码固定版本号,关闭自动版本生成逻辑即可。
验证方法

修改配置后直接运行tox即可复现测试流程,无需提前打Git标签,工作区存在未提交改动时也不会触发版本校验错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:04