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

如何在pyproject.toml中指定含连字符或下划线的可选依赖?

如何在pyproject.toml中指定含连字符或下划线的可选依赖?

我来帮你理清这个问题~你遇到的矛盾其实是setuptools和pip对可选依赖名称的处理规则差异导致的:

问题根源

  • setuptools要求optional-dependencies下的键必须是有效的Python标识符——也就是说只能用字母、数字和下划线,不能有连字符,所以你用some-extra当键会直接报错。
  • 而pip在解析安装命令里的额外依赖时,会自动把连字符转换成下划线去匹配setuptools定义的依赖项名称。

正确的解决方案

你只需要在pyproject.toml里用下划线命名可选依赖,然后安装时两种写法都能用:

  1. 先把pyproject.toml的配置改成这样(用下划线):
[tool.setuptools.dynamic.optional-dependencies]
some_extra = {file = ["requirements-some-extra.txt"]}
  1. 安装时,你可以任选一种方式:
    • 直接用下划线匹配配置里的键:
      pip install -e "./package[some_extra]"
      
    • 或者用连字符(pip会自动转成下划线去匹配):
      pip install -e "./package[some-extra]"
      

为什么你之前会收到警告?

如果按照上面的配置还是出现警告,大概率是你的pip或setuptools版本太旧了——旧版本可能存在标识符映射的bug。建议先把这两个工具更新到最新版:

pip install --upgrade pip setuptools

这样就能正常使用带连字符或下划线的可选依赖啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:08:09