Poetry/Pip安装本地包是否编译?develop参数区别与性能影响
Poetry中
develop=true与false的差异详解 针对你在monorepo中使用Poetry安装本地包的几个问题,逐一说明:
1. develop=true和false的核心区别
develop=true(开发模式):Poetry会在虚拟环境的site-packages目录下创建软链接,直接指向本地包的源码路径。本地包的代码修改后,无需重新执行poetry install,主项目就能立即获取更新,非常适合日常开发迭代。develop=false(常规安装模式):Poetry会将本地包的源码打包(生成wheel或sdist),然后完整复制到虚拟环境的site-packages中。本地包代码改动后,必须重新执行poetry install才能让主项目同步更新,适合发布前的测试或生产环境安装。
2. 安装过程的编译操作
无论develop设为true还是false,只要本地包包含需要编译的扩展模块(比如C/C++代码、Cython实现的模块),安装时都会触发编译流程:
develop=true时,编译产物会保留在本地包的build目录中,通过软链接被主项目引用;develop=false时,编译产物会随包一起复制到site-packages目录下。
3. 差异是否仅为复制vs链接?
不止于此,还有两个关键细节差异:
- 依赖处理:两种模式都会安装本地包的运行依赖,但
develop=true不会将本地包的开发依赖(比如测试框架、代码检查工具)安装到主项目的虚拟环境中; - 打包行为:如果主项目执行
poetry build,develop=false会把本地包的代码打包进主项目的分发包;develop=true则会忽略这个本地链接依赖,主项目打包时不会包含该本地包的代码,需要单独处理依赖打包逻辑。
4. 对程序执行/启动时间的影响
几乎没有可感知的差异。现代操作系统对软链接的解析开销极低,本地磁盘环境下,读取软链接指向的文件和直接读取site-packages中的文件速度基本一致。除非本地包所在目录是网络挂载盘,可能会有轻微延迟,但这种场景极少。
内容的提问来源于stack exchange,提问作者idan ahal
相关产品推荐
相关产品推荐

