执行poetry add导入requirements.txt依赖时会自动安装对应包吗?
现象原因
- 环境隔离机制:Poetry默认会为每个项目创建独立的专属虚拟环境,和你之前使用pip的系统环境、其他虚拟环境相互隔离。哪怕你之前在其他环境安装过完全相同版本的依赖,只要Poetry管理的当前项目虚拟环境中没有对应安装记录,就会重新执行安装流程。
poetry add命令的原生逻辑:该命令设计就是同步完成四项操作:将依赖声明写入pyproject.toml、全量校验依赖冲突、将依赖安装到项目虚拟环境、生成poetry.lock锁定版本文件,本身就包含安装步骤,不是仅生成配置文件的操作。- 传递依赖安装:你提供的requirements.txt只写了项目的直接依赖,Poetry做依赖解析时会自动梳理所有直接依赖的次级依赖(也就是执行日志里你没在requirements.txt中声明的那些包),这些传递依赖也会统一安装到项目环境中。
按需调整方案
如果你只需要生成pyproject.toml和poetry.lock文件,不需要立刻在本地安装依赖,可以在命令后添加--no-install参数:
poetry add `cat requirements.txt` --no-install
如果需要完全对齐requirements.txt的固定版本,避免Poetry默认添加的^版本约束允许后续兼容升级,可以提前把requirements.txt内的所有包都补全==具体版本号后缀,或者添加--strict参数执行导入。
内容的提问来源于stack exchange,提问作者Muhammad Fhadli
相关产品推荐
相关产品推荐

