Windows8.1系统Python3.10环境Jupyter Notebook安装scikit-learn失败
完整报错日志
ERROR: Command errored out with exit status 1: command: 'G:\python\python.exe' 'G:\python\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' prepare_metadata_for_build_wheel 'C:\Users\Zaid\AppData\Local\Temp\tmp9x904_3n' cwd: C:\Users\Zaid\AppData\Local\Temp\pip-install-hkon2hc1\scikit-learn_da5359c4d7ad4dadb4a1f14623e7a4ac Complete output (46 lines): Partial import of sklearn during the build process. No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils Traceback (most recent call last): File "G:\python\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module> main() File "G:\python\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "G:\python\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 164, in prepare_metadata_for_build_wheel return hook(metadata_directory, config_settings) File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\setuptools\build_meta.py", line 174, in prepare_metadata_for_build_wheel self.run_setup() File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\setuptools\build_meta.py", line 267, in run_setup super(_BuildMetaLegacyBackend, File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\setuptools\build_meta.py", line 158, in run_setup exec(compile(code, __file__, 'exec'), locals()) File "setup.py", line 319, in <module> setup_package() File "setup.py", line 315, in setup_package setup(**metadata) File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\numpy\distutils\core.py", line 135, in setup config = configuration() File "setup.py", line 201, in configuration config.add_subpackage("sklearn") File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\numpy\distutils\misc_util.py", line 1016, in add_subpackage config_list = self.get_subpackage(subpackage_name, subpackage_path, File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\numpy\distutils\misc_util.py", line 982, in get_subpackage config = self._get_configuration_from_setup_py( File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\numpy\distutils\misc_util.py", line 924, in _get_configuration_from_setup_py config = setup_module.configuration(*args) File "sklearn\setup.py", line 85, in configuration cythonize_extensions(top_path, config) File "C:\Users\Zaid\AppData\Local\Temp\pip-install-hkon2hc1\scikit-learn_da5359c4d7ad4dadb4a1f14623e7a4ac\sklearn\_build_utils\__init__.py", line 47, in cythonize_extensions basic_check_build() File "C:\Users\Zaid\AppData\Local\Temp\pip-install-hkon2hc1\scikit-learn_da5359c4d7ad4dadb4a1f14623e7a4ac\sklearn\_build_utils\pre_build_helpers.py", line 113, in basic_check_build compile_test_program(code) File "C:\Users\Zaid\AppData\Local\Temp\pip-install-hkon2hc1\scikit-learn_da5359c4d7ad4dadb4a1f14623e7a4ac\sklearn\_build_utils\pre_build_helpers.py", line 70, in compile_test_program ccompiler.compile( File "G:\python\lib\distutils\_msvccompiler.py", line 323, in compile self.initialize() File "G:\python\lib\distutils\_msvccompiler.py", line 220, in initialize vc_env = _get_vc_env(plat_spec) File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\setuptools\msvc.py", line 316, in msvc14_get_vc_env return _msvc14_get_vc_env(plat_spec) File "C:\Users\Zaid\AppData\Local\Temp\pip-build-env-ozjc6kz_\overlay\Lib\site-packages\setuptools\msvc.py", line 270, in _msvc14_get_vc_env raise distutils.errors.DistutilsPlatformError( distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required.
报错原因
该问题出现在Windows 8.1 + Python 3.10环境下安装scikit-learn时,核心原因是系统缺少Microsoft Visual C++ 14.0及以上版本的编译工具链。当pip无法找到适配当前环境的预编译scikit-learn wheel包时,会自动尝试从源码构建安装,而源码构建依赖C++编译环境,缺失该环境就会触发上述报错。
解决方案
- 方案1(优先推荐,无需安装大体积编译工具)
首先升级pip、setuptools、wheel组件到最新版本,执行命令:
升级完成后重新尝试安装scikit-learn:pip install --upgrade pip setuptools wheel
若仍触发编译报错,可安装适配Python3.10和Windows 8.1的稳定预编译版本:pip install scikit-learn
该版本官方提供了完备的Windows平台预编译包,无需本地编译即可直接安装使用。pip install scikit-learn==1.1.3 - 方案2(适合需要使用最新版scikit-learn的场景)
安装Microsoft C生成工具,安装过程中勾选「桌面使用C开发」工作负载,等待安装完成后重启命令行/Jupyter环境,再重新执行scikit-learn安装命令即可。
内容的提问来源于stack exchange,提问作者zaid iftikhar
相关产品推荐
相关产品推荐

