开发Python二进制模块时如何避免依赖重复重装?
解决pip install .重复安装构建依赖(cmake、ninja等)的问题
你遇到的问题核心在于:pyproject.toml中[build-system]下的requires属于构建阶段依赖,而pip install --no-deps仅跳过包的运行时依赖,对构建依赖无效。pip在执行模块构建前会强制确保这些构建依赖存在,所以每次都会检查并重新安装(如果环境中版本不满足或pip判定需要更新)。
以下是可行的解决方法:
使用
--no-build-isolation参数:
这个参数会让pip直接在当前环境中执行构建,而非创建隔离的虚拟环境来安装构建依赖。如果你的开发环境已经预先安装了cmake、ninja、scikit-build等工具,执行以下命令就不会再重复安装它们:pip install --no-build-isolation .预先安装构建依赖:
先一次性把所有构建依赖安装到开发环境中,彻底避免每次构建都重复安装:pip install setuptools>=42 scikit-build>=0.13 cmake>=3.20 ninja之后再执行
pip install --no-build-isolation .,就只会安装你的模块,不会触发构建依赖的重装。开发阶段用可编辑模式(Editable Install):
针对迭代开发场景,推荐使用可编辑模式,修改源代码后无需完整重装,仅需重新编译扩展部分,效率更高:pip install -e . --no-build-isolation
内容的提问来源于stack exchange,提问作者user2978125
相关产品推荐
相关产品推荐

