Windows 10下运行OpenAI Gym人形机器人示例时MuJoCo构建错误
Windows 10 + Python 3.10运行Gym Humanoid示例编译失败的解决办法
核心问题
编译mujoco_py扩展时触发致命错误:C1083: 无法打开包含文件: 'mujoco.h': 没有那个文件或目录,同时伴随MSVC编译器不识别-fopenmp参数的警告。
解决步骤
验证MuJoCo安装完整性
检查C:\Users\Joe\.mujoco\mujoco210\include目录下是否存在mujoco.h文件。如果缺失,重新下载对应版本的MuJoCo(当前日志对应mujoco210)并解压到C:\Users\Joe\.mujoco目录。配置系统环境变量
添加环境变量MUJOCO_PY_MUJOCO_PATH,值设为C:\Users\Joe\.mujoco\mujoco210;同时将C:\Users\Joe\.mujoco\mujoco210\bin添加到PATH变量中,确保系统能加载MuJoCo的动态库。处理编译器参数警告
MSVC不支持GCC风格的-fopenmp参数,两种解决方式:- 打开VS 2019 Build Tools安装程序,勾选安装C++ OpenMP组件,重启后重新运行代码;
- 临时禁用OpenMP:PowerShell中执行
$env:MUJOCO_PY_DISABLE_OPENMP=1,CMD中执行set MUJOCO_PY_DISABLE_OPENMP=1,再运行示例代码。
重新编译mujoco_py
- 卸载现有版本:
pip uninstall -y mujoco_py - 删除残留缓存:手动删除
C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py目录 - 以管理员身份打开VS 2019 x64原生工具命令提示符,执行
pip install mujoco-py==2.1.2.14重新安装,确保编译器环境配置正确。
- 卸载现有版本:
可选:解决distutils弃用警告
Python 3.10中distutils已被弃用,建议安装兼容版本的setuptools:pip install setuptools==65.5.0,或考虑降级到Python 3.9(部分旧版mujoco_py对Python 3.10支持有限)。
原始错误日志(中文翻译版)
PS C:\mayhem\gym\gym\envs\mujoco> python .\humanoid.py C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\builder.py:1: 弃用警告: distutils包已被弃用,计划在Python 3.12中移除。请使用setuptools或查看PEP 632获取替代方案 import distutils C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\builder.py:9: 弃用警告: distutils.sysconfig模块已被弃用,请使用sysconfig替代 from distutils.sysconfig import customize_compiler running build_ext building 'mujoco_py.cymj' extension C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py -IC:\Users\Joe\.mujoco\mujoco210\include -IC:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy\core\include -IC:\Users\Joe\AppData\Local\Programs\Python\Python310\include -IC:\Users\Joe\AppData\Local\Programs\Python\Python310\Include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt /TcC:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\gl\dummyshim.c /FoC:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\generated\_pyxbld_2.1.2.14_310_windowsextensionbuilder\temp.win-amd64-3.10\Release\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\gl\dummyshim.obj -fopenmp -w cl : 命令行警告 D9025 : 用'/w'重写'/W3' cl : 命令行警告 D9002 : 忽略未知选项'-fopenmp' dummyshim.c C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\site-packages\mujoco_py\gl\glshim.h(4): 致命错误 C1083: 无法打开包含文件: 'mujoco.h': 没有那个文件或目录 Traceback (most recent call last): File "C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\distutils\_msvccompiler.py", line 401, in compile self.spawn(args) File "C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\distutils\_msvccompiler.py", line 507, in spawn return super().spawn(cmd) File "C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\distutils\ccompiler.py", line 910, in spawn spawn(cmd, dry_run=self.dry_run) File "C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\distutils\spawn.py", line 91, in spawn raise DistutilsExecError( distutils.errors.DistutilsExecError: 命令'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe'以退出代码2失败 在处理上述异常期间,发生了另一个异常: Traceback (most recent call last): File "C:\mayhem\gym\gym\envs\mujoco\humanoid.py", line 4, in <module> from gym.envs.mujoco import MuJocoPyEnv ... File "C:\Users\Joe\AppData\Local\Programs\Python\Python310\lib\distutils\_msvccompiler.py", line 403, in compile raise CompileError(msg) distutils.errors.CompileError: 命令'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe'以退出代码2失败
内容的提问来源于stack exchange,提问作者jmcmahon443
相关产品推荐
相关产品推荐

