使用Poetry发布Python包:生产安装会安装dev组依赖吗?
问题解答
不会,用户通过pip install my_library安装你的库时,group.dev里的pytest不会被一并安装,完全符合你的预期。
原因很简单:
- Poetry的依赖组(比如
dev)属于开发专属依赖,这类依赖只会在你本地开发、测试自己的包时用到,默认不会被包含在最终发布的包的依赖清单里。 - 当你用Poetry构建发布包(比如
poetry build)时,只会把主依赖(a、b、c)写入包的元数据(比如pyproject.toml的[project.dependencies]或生成的setup.py),dev组的依赖会被排除在外。 - pip安装包时,只会读取包元数据里的主依赖列表进行安装,不会主动去拉取非主组的依赖。
如果有人确实需要安装你的包的开发依赖(比如要参与你的项目开发),他们需要显式指定安装dev组,比如执行pip install my_library[dev]——当然这需要你在pyproject.toml里把dev组配置为可选依赖(用[project.optional-dependencies]关联),但这是主动操作,不会在默认安装时触发。
内容的提问来源于stack exchange,提问作者zerohedge
相关产品推荐
相关产品推荐

