如何在Poetry的pyproject.toml中递归限制所有依赖使用numpy<2.0?
如何通过Poetry限制所有依赖(含传递依赖)使用numpy <2.0版本
要强制所有依赖(包括Prophet这类库的传递依赖)不使用numpy 2.0及以上版本,你需要用到Poetry的版本约束功能,而非仅指定顶层依赖版本。具体修改pyproject.toml的方法如下:
方法1:添加全局版本约束
在pyproject.toml中新增[tool.poetry.constraints]区块,明确限制numpy的版本范围:
[tool.poetry.constraints] numpy = "<2.0"
如果你的项目本身直接依赖numpy,可以同时保留原有的顶层依赖指定(比如numpy = "1.26.4")——两者结合后,顶层依赖会固定为1.26.4,所有传递依赖则被强制限制在<2.0范围内。
方法2:仅限制传递依赖(项目不直接依赖numpy时)
如果你的项目本身不需要直接安装numpy,只是要阻止传递依赖引入numpy 2.0+,可以在[tool.poetry.dependencies]中添加带constraint = true的条目:
[tool.poetry.dependencies] numpy = { version = "<2.0", constraint = true }
这种方式下,numpy不会被作为项目的顶层依赖安装,但会强制所有传递依赖遵守<2.0的版本限制。
生效步骤
修改完成后,执行以下操作确保约束生效:
- 删除旧的
poetry.lock文件(如果存在) - 运行
poetry install重新生成符合约束的依赖锁文件 - 可以用
poetry show --tree检查依赖树,确认所有涉及numpy的条目版本都<2.0
内容的提问来源于stack exchange,提问作者PabloCSD
相关产品推荐
相关产品推荐

