You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用GymEnv库时出现Cython编译错误求助

解决mujoco_py编译错误(c_warning_callback/c_error_callback 类型不兼容)

1. 优先匹配兼容版本

mujoco_py和高版本GCC/C++编译器不兼容是核心问题,直接锁定修复过该问题的版本最省心:

  • 针对GCC 10+版本,用mujoco_py==2.1.2.14
  • 执行卸载重装命令:
    pip uninstall -y mujoco_py
    pip install mujoco_py==2.1.2.14 --no-cache-dir
    

2. 手动修改cymj.pyx的正确姿势(迫不得已时用)

别乱改代码,按以下步骤来:

  • 找到mujoco_py安装路径下的cymj.pyx(一般在Lib\site-packages\mujoco_py\cymj.pyx)
  • 定位到c_warning_callback和c_error_callback函数,在声明末尾加上noexcept nogil:
    原代码示例:
    cdef void c_warning_callback(const char* msg):
        warnings.warn(msg.decode('utf-8'))
    
    修改后:
    cdef void c_warning_callback(const char* msg) noexcept nogil:
        warnings.warn(msg.decode('utf-8'))
    
    同样修改c_error_callback函数
  • 修改完重新编译:
    cd <你的mujoco_py安装目录>
    python setup.py build_ext --inplace
    

3. 临时适配高版本编译器

不想改版本的话,临时设置编译参数跳过报错:

  • Linux/macOS:
    export CFLAGS="-Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration"
    export CXXFLAGS="-Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration"
    
  • Windows(PowerShell):
    $env:CFLAGS="-Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration"
    $env:CXXFLAGS="-Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration"
    
    设置完直接重新运行你的PyTorchRL代码

4. 长期方案:换用官方MuJoCo库

mujoco_py已经停更,官方mujoco库更稳定,配合gymnasium(OpenAI Gym替代)迁移:

  • 安装依赖:
    pip install mujoco gymnasium
    
  • 替换代码中的环境初始化:
    from gymnasium.envs.mujoco import InvertedDoublePendulumEnv
    base_env = InvertedDoublePendulumEnv(render_mode=None)
    # 需要适配PyTorchRL接口的话,封装成GymEnv兼容格式即可
    

内容的提问来源于stack exchange,提问作者Harrisino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:54:55