pip install -r requirements.txt触发源码构建
问题
前几天基于dockerfile/requirementst.txt构建还是正常的,今天构建提示有源码构建动作。
- debian11
分析
核心原因不是 requirements.txt 里的 numpy==2.3.5 没生效,而是 scikit_learn==1.9.0 触发了 scipy 的构建隔离环境,pip在这个临时环境里重新解析了 NumPy 依赖。
日志已经把这个过程暴露得很清楚:
1 | scikit_learn==1.9.0 |
这里的 numpy-2.5.3.tar.gz 不是在安装你的主环境 NumPy,而是在:
1 | Installing build dependencies ... |
阶段,为 构建 scipy==1.18.1 准备的隔离 build environment。
解决
方案A: 预先numpy安装好,再禁止build isolation
1 | # 1.预先安装numpy |
这样 scipy 如果仍然需要从源码构建,它就不会再创建那个独立的 build environment,也不会在那里偷偷装:
1 | numpy==2.5.3 |
方案B:协议依赖版本
1 | # 新增写死版本 scipy==1.17.1 |
1 | pip install -r requirements.txt \ |