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

如何配置Poetry实现开发时安装本地包、其他用户使用时从PyPI安装包

如何配置Poetry实现开发时安装本地包、其他用户使用时从PyPI安装包

嘿,我来帮你搞定这个Poetry配置的问题!你想要实现开发环境用本地包、其他用户用PyPI包的思路是对的,但原来的配置因为混合了两种依赖声明方式,导致解析逻辑出了点小问题,我给你调整成靠谱的方案。

先说说你原来配置的问题:你把PyPI依赖写在PEP 621规范的[project]区块,本地包又写在Poetry传统的[tool.poetry.dependencies]区块,这种混合写法容易让依赖解析逻辑“打架”,导致localdev环境下没触发本地包的安装。

直接给你能用的正确配置:

[project]
name = "your-main-project"  # 替换成你的主项目名称
version = "0.1.0"           # 替换成你的主项目版本
dynamic = ["dependencies"]

[tool.poetry.dependencies]
python = "^3.8"  # 替换成你的项目支持的Python版本
my-package = [
    # 普通环境:从PyPI拉取指定版本的包
    { version = ">=0.0.1", markers = "extra != 'localdev'" },
    # 开发环境:安装本地包,开启开发模式(修改本地包代码直接生效)
    { path = "../my-package", develop = true, markers = "extra == 'localdev'" }
]

再给你说下具体怎么用:

  • 其他用户(或者你不需要本地开发时),直接运行:
    poetry install
    
    这时候Poetry会根据markers = "extra != 'localdev'"的规则,自动从PyPI拉取my-package>=0.0.1的包。
  • 你自己开发需要用本地包时,运行:
    poetry install --extras "localdev"
    
    这时候Poetry会触发markers = "extra == 'localdev'"的规则,忽略PyPI的包,转而安装../my-package路径下的本地包,而且develop = true会让本地包处于开发模式,你修改本地包的代码会直接在主项目里生效,不用反复重新安装。

如果想要更清晰地标识localdev这个额外环境,也可以加上下面的配置(不影响功能,但可读性更好):

[project.optional-dependencies]
localdev = []

这样配置就完全符合你的需求啦,既解决了开发环境用本地包的问题,也能让其他用户正常从PyPI安装依赖。

备注:内容来源于stack exchange,提问作者Лаврентий Наумов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:27:58