🔧 一、安装前准备
-
安装系统依赖
sudo apt update sudo apt install build-essential libgl1-mesa-glx libglew-dev patchelf libosmesa6-dev libglfw3-dev python3-dev
确保GCC编译器、OpenGL驱动等基础工具完整安装,避免后续编译失败。
-
获取MuJoCo许可证
- 访问官网 https://www.roboti.us/license.html。
- 下载许可证文件
mjkey.txt
,需确认安装目标设备。
📂 二、安装MuJoCo核心文件
-
下载与解压
wget https://www.roboti.us/download/mujoco200_linux.zip -P ~/ unzip ~/mujoco200_linux.zip -d ~/.mujoco mv ~/.mujoco/mujoco200_linux ~/.mujoco/mujoco200 cp mjkey.txt ~/.mujoco/ # 复制许可证到主目录 cp mjkey.txt ~/.mujoco/mujoco200/bin/ # 复制到bin目录 cp mjkey.txt ~/.mujoco/mujoco200/ # 复制到目录
解压后必须重命名文件夹为
mujoco200
,否则路径识别可能失败。 -
验证核心安装
cd ~/.mujoco/mujoco200/bin ./simulate ../model/humanoid.xml
若显示橘黄色人形模型动画,说明MuJoCo核心安装成功。
⚙️ 三、配置环境变量
编辑 ~/.bashrc
或 ~/.zshrc
,末尾添加:
echo 'export MUJOCO_PY_MUJOCO_PATH=$HOME/.mujoco/mujoco200' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.mujoco/mujoco200/bin' >> ~/.bashrc
echo 'export MUJOCO_GL=egl' >> ~/.bashrc
source ~/.bashrc
生效配置:
source ~/.bashrc
🐍 四、安装mujoco_py(Python绑定)
-
创建Conda环境(推荐)
conda create -n mujoco_env python=3.8 # Python 3.8兼容性最佳 conda activate mujoco_env
-
安装Cython(一定要这个版本,否则会报错)
pip install cython==0.29.24
-
安装mujoco_py
一定要这个版本pip install mujoco-py==2.0.2.8 # 指定兼容的版本
若安装失败,检查是否遗漏
libosmesa6-dev
或patchelf
等依赖。
✅ 五、验证完整安装
import os
os.environ['LD_LIBRARY_PATH'] += ':/root/.mujoco/mujoco200/bin'
import mujoco_py
import mujoco_py
import os
# 1. 取 tuple 第 0 个元素
# mj_path = mujoco_py.utils.discover_mujoco()[0]
# 2. 或者直接解压(如果返回的一元组)
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)
若无报错且数据更新,表明mujoco_py集成成功。
✅程序报错1:
Import error. Trying to rebuild mujoco_py.
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[1], line 3
1 import os
2 os.environ['LD_LIBRARY_PATH'] += ':/root/.mujoco/mujoco200/bin'
----> 3 import mujoco_py
File /usr/local/miniconda3/lib/python3.8/site-packages/mujoco_py/__init__.py:3
1 #!/usr/bin/env python
2 import os
----> 3 from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
4 from mujoco_py.generated import const
5 from mujoco_py.mjrenderpool import MjRenderPool
File /usr/local/miniconda3/lib/python3.8/site-packages/mujoco_py/builder.py:506
502 functions.mj_activate(key_path)
505 mujoco_path, key_path = discover_mujoco()
--> 506 cymj = load_cython_ext(mujoco_path)
509 # Trick to expose all mj* functions from mujoco in mujoco_py.*
510 class dict2(object):
File /usr/local/miniconda3/lib/python3.8/site-packages/mujoco_py/builder.py:106, in load_cython_ext(mujoco_path)
104 if mod is None:
105 cext_so_path = builder.build()
--> 106 mod = load_dynamic_ext('cymj', cext_so_path)
108 return mod
File /usr/local/miniconda3/lib/python3.8/site-packages/mujoco_py/builder.py:125, in load_dynamic_ext(name, path)
123 """ Load compiled shared object and return as python module. """
124 loader = ExtensionFileLoader(name, path)
--> 125 return loader.load_module()
ImportError: libglewosmesa.so: cannot open shared object file: No such file or directory
解决方案:如果 libglewosmesa.so
只在 mujoco 目录,直接链接到系统库路径:
sudo ln -sf /root/.mujoco/mujoco200/bin/libglewosmesa.so /usr/lib/libglewosmesa.so
sudo ln -sf /root/.mujoco/mujoco200/bin/libglewosmesa.so /usr/lib/x86_64-linux-gnu/libglewosmesa.so
(部分系统 /usr/lib64
或 /usr/local/lib
更合适,可按需调整。)
✅程序报错2:
next_obs, reward, done, info = self.env.step(action)
obs, reward, done, info = self.env.step(action)
ValueError: not enough values to unpack (expected 5, got 4)
建议安装兼容的Gym版本:
pip install gym==0.23.1