• 【Reinforcement Learning】Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决


    Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决

    本文根据一篇知乎文章链接在此进行配置,记录在配置过程中遇到的一些问题,原文作者的教程很详细,在此对原作者表示感谢~

    1. 直接进行知乎原文的第2.2 有效安装过程(避坑)
      在这里插入图片描述

    2.注意上文中各行代码的作用
    原文作者的代码有一点点小问题,我在注释中指出,要注意甄别

    **注意/.mujoco是隐藏文件夹,在界面中可以打开显示隐藏文件的开关**
    # 下载地址 https://github.com/deepmind/mujoco/releases/tag/2.1.0
    cd ~/Downloads/
    wget https://github.com/deepmind/mujoco/releases/download/2.1.0/mujoco210-linux-x86_64.tar.gz
    mv mujoco210-linux-x86_64.tar.gz mujoco210 #这里相当于重命名
    tar -zxvf mujoco210-linux-x86_64.tar.gz #这里有问题 应解压重命名后的文件
    mkdir ~/mujoco  #这里应改为 mkdir ~/.mujoco 
    cp -r mujoco210 ~/.mujoco #复制到~/.mujoco中 
    # 添加环境变量
    sudo gedit ~/.bashrc
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.mujoco/mujoco210/bin
    export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
    source ~/.bashrc
    
    # 测试
    cd ~/.mujoco/mujoco210/bin/
    ./simulate ../model/humanoid.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    其余按照原作者的内容进行安装
    3.在安装mujoco_py时,我首先遇到作者未出现的报错

    anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx:127:21: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'. Exception values are incompatible. Suggest adding 'noexcept' to type 'void (const char *) except * nogil'.
    Traceback (most recent call last):
      File "", line 1, in 
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/__init__.py", line 2, in 
        from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 504, in 
        cymj = load_cython_ext(mujoco_path)
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 110, in load_cython_ext
        cext_so_path = builder.build()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 226, in build
        built_so_file_path = self._build_impl()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 296, in _build_impl
        so_file_path = super()._build_impl()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 239, in _build_impl
        dist.ext_modules = cythonize([self.extension])
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize
        cythonize_one(*args)
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1321, in cythonize_one
        raise CompileError(None, pyx_file)
    Cython.Compiler.Errors.CompileError: /home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx
    >>> import mujoco_py
    Compiling /home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx because it changed.
    [1/1] Cythonizing /home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx
    performance hint: anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx:67:5: Exception check on 'c_warning_callback' will always require the GIL to be acquired.
    Possible solutions:
    	1. Declare the function as 'noexcept' if you control the definition and you're sure you don't want the function to raise exceptions.
    	2. Use an 'int' return type on the function to allow an error code to be returned.
    performance hint: anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx:104:5: Exception check on 'c_error_callback' will always require the GIL to be acquired.
    Possible solutions:
    	1. Declare the function as 'noexcept' if you control the definition and you're sure you don't want the function to raise exceptions.
    	2. Use an 'int' return type on the function to allow an error code to be returned.
    
    Error compiling Cython file:
    ------------------------------------------------------------
    ...
        See c_warning_callback, which is the C wrapper to the user defined function
        '''
        global py_warning_callback
        global mju_user_warning
        py_warning_callback = warn
        mju_user_warning = c_warning_callback
                           ^
    ------------------------------------------------------------
    
    anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx:92:23: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'. Exception values are incompatible. Suggest adding 'noexcept' to type 'void (const char *) except * nogil'.
    
    Error compiling Cython file:
    ------------------------------------------------------------
    ...
        See c_warning_callback, which is the C wrapper to the user defined function
        '''
        global py_error_callback
        global mju_user_error
        py_error_callback = err_callback
        mju_user_error = c_error_callback
                         ^
    ------------------------------------------------------------
    
    anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx:127:21: Cannot assign type 'void (const char *) except * nogil' to 'void (*)(const char *) noexcept nogil'. Exception values are incompatible. Suggest adding 'noexcept' to type 'void (const char *) except * nogil'.
    Traceback (most recent call last):
      File "", line 1, in 
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/__init__.py", line 2, in 
        from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 504, in 
        cymj = load_cython_ext(mujoco_path)
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 110, in load_cython_ext
        cext_so_path = builder.build()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 226, in build
        built_so_file_path = self._build_impl()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 296, in _build_impl
        so_file_path = super()._build_impl()
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/builder.py", line 239, in _build_impl
        dist.ext_modules = cythonize([self.extension])
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize
        cythonize_one(*args)
      File "/home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/Cython/Build/Dependencies.py", line 1321, in cythonize_one
        raise CompileError(None, pyx_file)
    Cython.Compiler.Errors.CompileError: /home/yangsen/anaconda3/envs/myRL/lib/python3.9/site-packages/mujoco_py/cymj.pyx
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79

    解决方法:更换Cython版本
    参考文章

    pip install Cython==3.0.0a10
    
    • 1

    更换版本后继续 import mojoco_py出现知乎文章中提及的问题,按照原文作者的方法可以解决

    4.祝安装成功!

  • 相关阅读:
    HTML的文档类型与字符集<!DOCTYPE html>
    Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程
    5个小功能掌握正则表达式的使用
    Automated Feature Engineering In AutoML
    【计算机网络】P1 计算机网络概念、组成、功能、分类、标准化工作以及性能评估指标
    小目标检测:基于切图检测的yolov5小目标训练
    进制转换计算器
    【commons-lang3专题】005- ObjectUtils 专题
    全网最全Python系列教程(非常详细)---字符串讲解(学Python入门必收藏)
    自己整理的“无培训广告”的技术公众号!
  • 原文地址:https://blog.csdn.net/Ever_____/article/details/133953975