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

Poetry:如何为指定包定义安装回退机制

这种配置方式不可行

你写的重复声明依赖的方式在Poetry里是无效的,因为Poetry会忽略重复依赖项中先声明的配置,只保留最后一行的内容。也就是说不管../my-backend路径是否存在,最终生效的都会是my-backend = {version = "^3.0.0"},完全达不到你想要的“路径存在用开发模式,不存在回退到PyPI包”的效果。

正确的实现方案

方案1:使用开发依赖组

把路径依赖放到专门的开发依赖组里,通过命令参数区分开发和部署场景:

[tool.poetry.dependencies]
python = ">=3.11"
my-backend = "^3.0.0"

[tool.poetry.group.dev.dependencies]
my-backend = {path = "../my-backend", develop = true}
  • 开发阶段执行:poetry install --with dev,此时会优先使用本地路径的开发模式依赖
  • 服务器部署时执行:poetry install --without dev,只会安装PyPI上的正式版本

方案2:使用条件依赖(通过环境变量控制)

利用Poetry的依赖标记功能,通过环境变量切换依赖来源:

[tool.poetry.dependencies]
python = ">=3.11"
my-backend = [
  {path = "../my-backend", develop = true, markers = "env DEV_MODE = 'true'"},
  {version = "^3.0.0"}
]
  • 开发时设置环境变量后安装:
    export DEV_MODE=true
    poetry install
    
  • 服务器部署时直接执行poetry install,不设置DEV_MODE就会自动使用PyPI上的版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:32:39