在ubuntu上配置mujoco,安裝mujoco_py


自從deepmind收購Mujoco后,之前在服務器上配置的Mujoco就出現問題了,加之因offlinerl需安裝d4rl,依賴mujoco,因此如果mujoco安裝失敗,后續的安裝難以開展。
經過多番嘗試,終於首先在本地ubuntu上安裝成功mujoco,為后續在服務器上安裝探索了路徑。

環境:ubuntu 18.04.5 LTS, Anaconda, python 3.8
前提:安裝anaconda

一、安裝mujoco
1.在Anaconda中創建虛擬環境 anaconda create -n d4rl python=3.8(這里使用python3.8,是因為網上說后續安裝gym需要3.8)
2.創建好后通過conda activate d4rl 切換到配置的環境下,注意通過 python --version 查看當前創建的python 環境版本是否是3.8,否則會報錯。可能需要關閉zsh,再重新打開,否則雖然切換到d4rl下了,但實際上可能只是base環境。這個問題可能是我的.zshrc文件中的某些設置引發的,暫時未找到原因。
3.雖然mujoco已經更新到mujoco210,但實踐中發現,其實mujoco200是匹配的版本。但deepmind的github官網上只有最新版本的mujoco,並沒有歷史版本的,因此需要在原來的Mujoco頁面(roboti.us/download.html)Download下下載 mujoco200 linux(不再需要mjkey文件,mujoco150之前的版本還需要)。
4.在本地機器 /home/zlf 路徑下創建隱藏文件夾 .mujoco
5.把下載好的mujoco200 linux 通過 cp ~/Download/mujoco200 linux ~/.mujoco 復制到創建的.mujoco文件夾下。
6.通過解壓指令解壓mujoco200 linux,並把解壓出的文件夾通過指令 mv mujoco200 linux mujoco200, 即把文件夾名稱修改為mujoco200
7.通過vim .zshrc 打開 .zshrc文件,並添加路徑名稱:
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/(用戶名)/.mujoco/mujoco200/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
8.wq指令保存后,source ~/.zshrc 啟動修改
9.到這里Mujoco就配置好了,可以檢查一下:
cd ~/.mujoco/mujoco200/bin
./simulate ../model/humanoid.xml
這里可能simulate會報錯,上網查一下好像用chmod 777 simulate就可以解決。
當然顯卡驅動版本太低的話,只會出現一個黑框,沒有圖像。
我本人的機器確實只顯示了一個黑框:

  黑框關閉后出現了一句:
  ![](https://img2022.cnblogs.com/blog/2010713/202204/2010713-20220419213502076-1228419267.png)

 至此,mujoco安裝完成。

 (注意:如果是提示需要安裝mikey.txt,則下載mjkey.txt后cp 到mujoco200和mujoco200/bin,即可)

二、安裝mujoco_py
1. 在配置環境(python 3.8)下, pip install mujoco_py==2.0.2.10
2.安裝好后,python---import mujoco_py,出現報錯:
>>> import mujoco_py
Compiling /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.pyx because it depends on /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/pxd/mujoco.pxd.
[1/1] Cythonizing /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.pyx
running build_ext
building 'mujoco_py.cymj' extension
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl
gcc -pthread -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py -I/home/zlf/.mujoco/mujoco200/include -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/numpy/core/include -I/home/zlf/anaconda3/envs/d4rl/include/python3.8 -c /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.c -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.o -fopenmp -w
gcc -pthread -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py -I/home/zlf/.mujoco/mujoco200/include -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/numpy/core/include -I/home/zlf/anaconda3/envs/d4rl/include/python3.8 -c /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.c -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.o -fopenmp -w
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/lib.linux-x86_64-3.8
creating /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/lib.linux-x86_64-3.8/mujoco_py
gcc -pthread -shared -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -L/home/zlf/anaconda3/envs/d4rl/lib -Wl,-rpath=/home/zlf/anaconda3/envs/d4rl/lib -Wl,--no-as-needed -Wl,--sysroot=/ /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.o -L/home/zlf/.mujoco/mujoco200/bin -Wl,-R/home/zlf/.mujoco/mujoco200/bin -lmujoco200 -lglewosmesa -lOSMesa -lGL -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/lib.linux-x86_64-3.8/mujoco_py/cymj.cpython-38-x86_64-linux-gnu.so -fopenmp
/home/zlf/anaconda3/envs/d4rl/compiler_compat/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
Traceback (most recent call last):
File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/unixccompiler.py", line 249, in link
self.spawn(linker + ld_args)
File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/ccompiler.py", line 917, in spawn
spawn(cmd, dry_run=self.dry_run, **kwargs)
File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/spawn.py", line 68, in spawn
raise DistutilsExecError(
distutils.errors.DistutilsExecError: command '/usr/bin/gcc' failed with exit code 1

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/__init__.py", line 3, in <module>
          from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 510, in <module>
          cymj = load_cython_ext(mujoco_path)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 105, in load_cython_ext
          cext_so_path = builder.build()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 221, in build
          built_so_file_path = self._build_impl()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 273, in _build_impl
          so_file_path = super()._build_impl()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 244, in _build_impl
          dist.run_commands()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 967, in run_commands
          self.run_command(cmd)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/dist.py", line 1214, in run_command
          super().run_command(command)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 986, in run_command
          cmd_obj.run()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/Cython/Distutils/old_build_ext.py", line 186, in run
          _build_ext.build_ext.run(self)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 339, in run
          self.build_extensions()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/builder.py", line 144, in build_extensions
          build_ext.build_extensions(self)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
          _build_ext.build_ext.build_extensions(self)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 448, in build_extensions
          self._build_extensions_serial()
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 473, in _build_extensions_serial
          self.build_extension(ext)
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 550, in build_extension
          self.compiler.link_shared_object(
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/ccompiler.py", line 713, in link_shared_object
          self.link(CCompiler.SHARED_OBJECT, objects,
        File "/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/setuptools/_distutils/unixccompiler.py", line 251, in link
          raise LinkError(msg)
      distutils.errors.LinkError: command '/usr/bin/gcc' failed with exit code 1


      3. 這是因為缺少包,安裝:sudo apt-get install libgl1-mesa-dev ,即可。
      4. 再輸入 python   ---- import  mujoco_py,出現如下:
          
            >>> import mujoco_py

running build_ext
building 'mujoco_py.cymj' extension
gcc -pthread -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py -I/home/zlf/.mujoco/mujoco200/include -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/numpy/core/include -I/home/zlf/anaconda3/envs/d4rl/include/python3.8 -c /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.c -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.o -fopenmp -w
gcc -pthread -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py -I/home/zlf/.mujoco/mujoco200/include -I/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/numpy/core/include -I/home/zlf/anaconda3/envs/d4rl/include/python3.8 -c /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.c -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.o -fopenmp -w
gcc -pthread -shared -B /home/zlf/anaconda3/envs/d4rl/compiler_compat -L/home/zlf/anaconda3/envs/d4rl/lib -Wl,-rpath=/home/zlf/anaconda3/envs/d4rl/lib -Wl,--no-as-needed -Wl,--sysroot=/ /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/cymj.o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/temp.linux-x86_64-3.8/home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/gl/osmesashim.o -L/home/zlf/.mujoco/mujoco200/bin -Wl,-R/home/zlf/.mujoco/mujoco200/bin -lmujoco200 -lglewosmesa -lOSMesa -lGL -o /home/zlf/anaconda3/envs/d4rl/lib/python3.8/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_38_linuxcpuextensionbuilder/lib.linux-x86_64-3.8/mujoco_py/cymj.cpython-38-x86_64-linux-gnu.so -fopenmp

即證明mujoco_py 安裝成功

    5.安裝好mujoco_py之后可以用python檢查一下:(直接在命令行輸入python,然后輸入以下代碼):
        import mujoco_py   # 這里第一次import mujoco_py可能要等待一下,會有一些顯示,等完成之后再import一次

              import os
              mj_path, _ = mujoco_py.utils.discover_mujoco()     # 這里好像修改了?改成mj_path = mujoco_py.utils.discover_mujoco()
              xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
              model = mujoco_py.load_model_from_path(xml_path)
              sim = mujoco_py.MjSim(model)
              print(sim.data.qpos)
              # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

              sim.step()
              print(sim.data.qpos)
              # [-2.09531783e-19  2.72130735e-05  6.14480786e-22 -3.45474715e-06
              #   7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04
              #   8.50646247e-05 -3.45474715e-06  7.42993721e-06 -1.40711141e-04
              #  -3.04253586e-04 -2.07559344e-04 -8.50646247e-05  1.11317030e-04
              #  -7.03465386e-05 -2.22862221e-05 -1.11317030e-04  7.03465386e-05
              #  -2.22862221e-05]
            
            沒問題,即mujoco_py安裝完畢。

參考文獻:

    1.  安裝Mujoco、Mujoco_py、D4RL、gym、d3rlpy以及Pycharm遠程連接服務器問題 (https://zhuanlan.zhihu.com/p/434073300)
    2.  安裝mujoco_py出現:anaconda3/compiler_compat/ld: cannot find -lGL    (https://blog.csdn.net/jiangjiang_jian/article/details/100986205)
    3.   Anaconda-用conda創建python虛擬環境   (zhuanlan.zhihu.com/p/94744929)
    4.   Import error. Trying to rebuild mujoco_py. running build_ext building 'mujoco_py.cymj' extension distutils.errors.CompileError: command '/usr/local/bin/gcc-9' failed with exit status 1 #539  (https://github.com/openai/mujoco-py/issues/539)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM