Python3.9.19升级后,Azure DevOps安装scikit-learn 0.22.2.post1遇numpy缺失错误
解决Azure DevOps管道中scikit-learn 0.22.2.post1安装时的numpy依赖问题
针对你在Azure DevOps管道中安装旧版本scikit-learn时遇到的ModuleNotFoundError: No module named 'numpy'错误,以下是几种可行的解决方法:
方法1:禁用构建隔离模式
pip默认会在隔离环境中构建wheel,这意味着你提前安装的numpy不会被构建过程识别。禁用隔离模式可以让构建过程直接使用当前环境已安装的依赖:
- 先单独安装构建所需的核心依赖:
pip install --target="./.python_packages/lib/site-packages" numpy<1.20.0 cython==0.29.36 - 再安装完整依赖,添加
--no-build-isolation参数:pip install --target="./.python_packages/lib/site-packages" --no-build-isolation -r ./requirements.txt
方法2:强制使用预编译wheel,避免源码构建
scikit-learn 0.22.2.post1存在适配Python 3.9的预编译wheel,强制pip使用二进制包可以跳过源码构建步骤,从根本上避免依赖缺失问题:
pip install --target="./.python_packages/lib/site-packages" --only-binary="scikit-learn" -r ./requirements.txt
如果上述命令仍有问题,可以扩大强制范围到所有包:
pip install --target="./.python_packages/lib/site-packages" --only-binary=":all:" -r ./requirements.txt
方法3:拆分依赖安装顺序
明确指定先安装numpy和cython,再安装其他依赖,确保scikit-learn构建时依赖已就绪:
- 安装基础依赖:
pip install --target="./.python_packages/lib/site-packages" numpy<1.20.0 cython==0.29.36 pandas>=0.25.1 - 安装剩余依赖:
pip install --target="./.python_packages/lib/site-packages" scikit-learn==0.22.2.post1 azure-functions spacy==3.7.6 (其他不相关依赖)
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

