Windows下Python3.12安装Keras失败:dm-tree编译wheel出错求助
问题
在Windows系统中使用Python 3.12.1安装Keras时失败,核心报错为构建dm-tree的wheel包失败,完整错误日志如下:
Traceback (most recent call last): File "C:\Users\Nate\PycharmProjects\first_flask\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module> main() File "C:\Users\Nate\PycharmProjects\first_flask\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nate\PycharmProjects\first_flask\.venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 251, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\build_meta.py", line 404, in build_wheel return self._build_with_temp_dir( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\build_meta.py", line 389, in _build_with_temp_dir self.run_setup() File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\build_meta.py", line 480, in run_setup super(_BuildMetaLegacyBackend, self).run_setup(setup_script=setup_script) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup exec(code, locals()) File "<string>", line 124, in <module> File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\__init__.py", line 103, in setup return distutils.core.setup(**attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 185, in setup return run_commands(dist) ^^^^^^^^^^^^^^^^^^ File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands dist.run_commands() File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command super().run_command(command) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\wheel\bdist_wheel.py", line 368, in run self.run_command("build") File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command super().run_command(command) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run self.run_command(cmd_name) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command super().run_command(command) File "C:\Users\Nate\AppData\Local\Temp\pip-build-env-hjzyqeky\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "<string>", line 72, in run File "<string>", line 110, in build_extension File "C:\Users\Nate\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j16', '--config', 'Release']' returned non-zero exit status 1. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for dm-tree Failed to build dm-tree ERROR: Could not build wheels for dm-tree, which is required to install pyproject.toml-based projects
已将C:\Users\<user>\AppData\Local\Programs\Python\Python312添加到环境变量PATH,但不确定是否需要添加C:\Users\<user>\AppData\Local\Programs\Python\Python312\Scripts目录,希望在不安装Python 3.11的前提下解决该问题。
解决方法
1. 完善环境变量
- 必须将
C:\Users\<user>\AppData\Local\Programs\Python\Python312\Scripts添加到系统环境变量PATH中,该目录包含pip等工具的可执行文件,确保pip能正常调用依赖工具。 - 添加完成后重启终端或IDE,使环境变量生效。
2. 安装CMake并配置环境
报错核心是CMake构建失败,需确保系统已安装CMake且版本符合要求:
- 安装适配Windows的CMake最新稳定版(建议3.20+),安装时勾选"Add CMake to the system PATH for all users"或当前用户。
- 安装完成后,在终端执行
cmake --version验证是否能正常调用。
3. 安装Visual Studio C++构建工具
Windows下编译Python扩展需要C++编译环境:
- 安装Visual Studio社区版,勾选"Desktop development with C++"工作负载,确保包含MSVC编译器、Windows SDK等组件。
- 安装完成后重启电脑,使编译环境生效。
4. 尝试安装预编译的dm-tree轮子
如果编译失败,可直接安装预编译的二进制包:
激活虚拟环境后执行:
pip install dm-tree --only-binary :all:
该命令强制pip使用预编译的wheel包,跳过本地编译步骤。
5. 升级pip和依赖工具
确保pip、setuptools、wheel为最新版本,避免工具版本过低导致的兼容问题:
pip install --upgrade pip setuptools wheel
内容的提问来源于stack exchange,提问作者Nathan Heffington
相关产品推荐
相关产品推荐

