使用pip安装scikit-learn时遭遇构建依赖错误求助
安装scikit-learn时Fortran编译器缺失错误的解决方案
环境信息
- Python版本:3.8.5
- pip版本:22.3
核心问题
执行pip install scikit-learn时,pip尝试从源码编译依赖包scipy,但系统中未安装Fortran编译器(如gfortran、ifort等),导致Meson构建系统无法完成编译流程。
解决方案
方法1:使用预编译二进制包(优先推荐)
直接安装预编译好的包,跳过源码编译步骤:
pip install scikit-learn --only-binary :all:
如果有conda环境,也可以用conda安装:
conda install scikit-learn
方法2:安装Fortran编译器(需源码编译时使用)
- 下载包含gfortran的MinGW-w64安装包
- 安装时将gfortran添加到系统环境变量PATH中
- 重启命令行,执行
gfortran --version验证编译器是否正常识别 - 重新运行
pip install scikit-learn
完整报错信息(中文翻译)
正在收集scikit-learn 使用缓存的scikit-learn-1.1.3.tar.gz (7.0 MB) 安装构建依赖项... 错误 error: subprocess-exited-with-error × 用于安装构建依赖项的pip子进程未成功运行。 │ 退出码: 1 ╰─> [96行输出] 忽略numpy: 标记'python_version == "3.10" and platform_system == "Windows" and platform_python_implementation != "PyPy"'与当前环境不匹配 正在收集setuptools<60.0 使用缓存的setuptools-59.8.0-py3-none-any.whl (952 kB) 正在收集wheel 使用缓存的wheel-0.37.1-py2.py3-none-any.whl (35 kB) 正在收集Cython>=0.28.5 使用缓存的Cython-0.29.32-py2.py3-none-any.whl (986 kB) 正在收集oldest-supported-numpy 使用缓存的oldest_supported_numpy-2022.8.16-py3-none-any.whl (3.9 kB) 正在收集scipy>=1.3.2 使用缓存的scipy-1.9.3.tar.gz (42.1 MB) 安装构建依赖项: 已启动 安装构建依赖项: 完成,状态为'done' 获取构建wheel的依赖项: 已启动 获取构建wheel的依赖项: 完成,状态为'error' error: subprocess-exited-with-error 获取构建wheel的依赖项未成功运行。 退出码: 1 [64行输出] Meson构建系统 版本: 0.63.3 源目录: C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67 构建目录: C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67\\.mesonpy-nddxhmy3\\build 构建类型: 原生构建 项目名称: SciPy 项目版本: 1.9.3 主机机器的C编译器: gcc (gcc 9.2.0 "gcc (MinGW.org GCC Build-2) 9.2.0") 主机机器的C链接器: gcc ld.bfd 2.32 主机机器的C++编译器: c++ (gcc 9.2.0 "c++ (MinGW.org GCC Build-2) 9.2.0") 主机机器的C++链接器: c++ ld.bfd 2.32 主机机器CPU系列: x86 主机机器CPU: x86 C编译器支持参数-Wno-unused-but-set-variable: 是 C编译器支持参数-Wno-unused-but-set-variable: 是(已缓存) C编译器支持参数-Wno-unused-function: 是 C编译器支持参数-Wno-conversion: 是 C编译器支持参数-Wno-misleading-indentation: 是 C编译器支持参数-Wno-incompatible-pointer-types: 是 库m已找到: 是 ..\\..\\meson.build:57:0: 错误: 未知编译器: [['ifort'], ['gfortran'], ['flang'], ['pgfortran'], ['g95']] 遇到以下异常: 执行`ifort --version`返回"[WinError 2] 系统找不到指定的文件" 执行`ifort -V`返回"[WinError 2] 系统找不到指定的文件" 执行`gfortran --version`返回"[WinError 2] 系统找不到指定的文件" 执行`gfortran -V`返回"[WinError 2] 系统找不到指定的文件" 执行`flang --version`返回"[WinError 2] 系统找不到指定的文件" 执行`flang -V`返回"[WinError 2] 系统找不到指定的文件" 执行`pgfortran --version`返回"[WinError 2] 系统找不到指定的文件" 执行`pgfortran -V`返回"[WinError 2] 系统找不到指定的文件" 执行`g95 --version`返回"[WinError 2] 系统找不到指定的文件" 执行`g95 -V`返回"[WinError 2] 系统找不到指定的文件" 完整日志可在C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67\\.mesonpy-nddxhmy3\\build\\meson-logs\\meson-log.txt查看 + meson setup --native-file=C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=c:\\users\\manju\\appdata\\local\\programs\\python\\python38-32 C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67 C:\\Users\\manju\\AppData\\Local\\Temp\\pip-install-1t0wentg\\scipy_8ed1046c49a04dd98aabab84e6319b67\\.mesonpy-nddxhmy3\\build 回溯(最近的调用最后): 文件"C:\\Users\\manju\\AppData\\Local\\Programs\\Python\\Python38-32\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", 第351行, in <module> main() 文件"C:\\Users\\manju\\AppData\\Local\\Programs\\Python\\Python38-32\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", 第333行, in main json_out['return_val'] = hook(**hook_input['kwargs']) 文件"C:\\Users\\manju\\AppData\\Local\\Programs\\Python\\Python38-32\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", 第118行, in get_requires_for_build_wheel return hook(config_settings) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第969行, in get_requires_for_build_wheel with _project(config_settings) as project: 文件"c:\\users\\manju\\appdata\\local\\programs\\python\\python38-32\\lib\\contextlib.py", 第113行, in __enter__ return next(self.gen) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第948行, in _project with Project.with_temp_working_dir( 文件"c:\\users\\manju\\appdata\\local\\programs\\python\\python38-32\\lib\\contextlib.py", 第113行, in __enter__ return next(self.gen) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第777行, in with_temp_working_dir yield cls(source_dir, tmpdir, build_dir) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第682行, in __init__ self._configure(reconfigure=bool(build_dir) and not native_file_mismatch) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第713行, in _configure self._meson( 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第696行, in _meson return self._proc('meson', *args) 文件"C:\\Users\\manju\\AppData\\Local\\Temp\\pip-build-env-8ril8k9h\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", 第691行, in _proc subprocess.check_call(list(args)) 文件"c:\\users\\manju\\appdata\\local\\programs\\python\\python38-32\\lib\\subprocess.py", 第364行, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: 命令'['meson', 'setup', '--native-file=C:\\\\Users\\\\manju\\\\AppData\\\\Local\\\\Temp\\\\pip-install-1t0wentg\\\\scipy_8ed1046c49a04dd98aabab84e6319b67\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=c:\\\\users\\\\manju\\\\appdata\\\\local\\\\programs\\\\python\\\\python38-32', 'C:\\\\Users\\\\manju\\\\AppData\\\\Local\\\\Temp\\\\pip-install-1t0wentg\\\\scipy_8ed1046c49a04dd98aabab84e6319b67', 'C:\\\\Users\\\\manju\\\\AppData\\\\Local\\\\Temp\\\\pip-install-1t0wentg\\\\scipy_8ed1046c49a04dd98aabab84e6319b67\\\\.mesonpy-nddxhmy3\\\\build']'返回非零退出状态1。 [输出结束] 注意: 此错误源自子进程,可能与pip无关。 error: subprocess-exited-with-error 获取构建wheel的依赖项未成功运行。 退出码: 1 查看上方输出。 注意: 此错误源自子进程,可能与pip无关。 [输出结束] 注意: 此错误源自子进程,可能与pip无关。 error: subprocess-exited-with-error × 用于安装构建依赖项的pip子进程未成功运行。 │ 退出码: 1 ╰─> 查看上方输出。 注意: 此错误源自子进程,可能与pip无关。
内容的提问来源于stack exchange,提问作者chandrika
相关产品推荐
相关产品推荐

