看了看网上我这个搭配的教程比较少,所以把折磨的过程写下来供需要的人参考。
(是真的折磨啊,虽然肯定有我linux用的少的原因就是了ORZ)
1.下载安装 Anaconda 并创建虚拟环境
wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh --no-check-certificate
bash Anaconda3-2022.10-Linux-x86_64.sh
按照默认安装即可
source ~/.bashrc (出现base前缀)
创建了名为gym0.2的python=3.6的虚拟环境
conda create -n gym0.2 python=3.6
激活环境
conda activate gym0.2 (出现gym0.2前缀)
***之后所有操作都要在激活虚拟环境下完成,即前缀需要显示为gym0.2***
2.调整gcc和g++版本
安装4.8版本
sudo apt install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib
注册
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
查看当前所有版本
ll /usr/bin/gcc*
删除除了4.8之外的版本(比如7)
sudo update-alternatives --remove gcc /usr/bin/gcc-7
sudo apt-get remove gcc-7
**再重新执行4.8版本的安装和注册**
查看当前所有版本
ll /usr/bin/gcc*
发现仅有4.8存在,成功
3.下载mujoco150
下载mjpro150 linux : https://roboti.us/download.html
下载密钥 https://roboti.us/license.html 下载蓝色字的 Activation key ,下载之后是一个txt的key
在主目录创建一个.mujoco(注意前面有个'.')的文件夹,注意.开头的文件夹是隐藏的,你需要在文件夹右上边的选项中显示隐藏文件夹,或者使用命令行完成家下来的操作
将mjpro150文件夹和key文件一起放到.mujoco文件夹中
添加环境变量
sudo echo "export LD_LIBRARY_PATH=~/.mujoco/mjpro150/bin:$LD_LIBRARY_PATH" >> ~/.bashrc
sudo echo "export MUJOCO_KEY_PATH=~/.mujoco:$MUJOCO_KEY_PATH" >> ~/.bashrc
刷新(刷新后需要重新激活gym0.2环境)
source ~/.bashrc
测试是否安装成功
cd ~/.mujoco/mujoco200/bin/
./simulate ../model/humanoid.xml
4.安装mojoco-py
直接使用
pip install mujoco-py==1.50.1.0
***其他版本链接https://github.com/openai/mujoco-py/releases**
测试
将以下代码保存为test1.py文件
import mujoco_py
import os
# 获取MuJoCo的安装路径
mj_path, _ = mujoco_py.utils.discover_mujoco()
# 构建XML文件路径
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
# 加载MuJoCo模型
model = mujoco_py.load_model_from_path(xml_path)
# 创建MuJoCo模拟器
sim = mujoco_py.MjSim(model)
# 打印初始状态
print("Initial qpos:")
print(sim.data.qpos)
# 进行一步模拟
sim.step()
# 打印模拟后的状态
print("\nqpos after one step:")
print(sim.data.qpos)
在gym0.2环境中运行,运行上述代码
python3 test1.py
我分别遇到过成功与不成功的情况
其中不成功的报错内容很长,其中关键内容是
'mjtDisableBit' redeclared
'mjtEnableBit' redeclared
等众多重复声明,以及Exception check on 'c_warning_callback' will always require the GIL
解决办法:降低cython版本
使用
cython --version
查看当前版本(需要0.29.21版本)
卸载当前版本
pip uninstall Cython
安装旧版本
pip install -U Cython==0.29.21
再次运行
python3 test1.py
等待重编译,如果出现以下结果表明安装成功
Initial qpos:
[0. 0. 1.4 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
qpos after one step:
[-1.27161562e-06 1.44864634e-21 1.39996033e+00 1.00000000e+00
1.03660792e-21 5.72581843e-06 1.82492769e-20 7.72447910e-20
7.56543337e-06 -1.25013603e-20 -5.48340066e-07 1.11131854e-05
-1.31327715e-04 -3.02014428e-04 -3.07930146e-04 1.38935774e-05
-5.48340066e-07 1.11131854e-05 -1.31327715e-04 -3.02014428e-04
-3.07930146e-04 -1.38935774e-05 -8.12365751e-06 9.97029984e-06
-2.12264641e-06 8.12365751e-06 -9.97029984e-06 -2.12264641e-06]
5.安装gym0.20.0
cd ~/
git clone https://github.com/openai/gym.git
cd gym/
git checkout v0.20.0
sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb ffmpeg xorg-dev python-opengl libboost-all-dev libsdl2-dev swig python3-pil libglfw3-dev
这时先不要运行 pip install -e '.[all]'
会卡在Building wheel for opencv-python (PEP 517) ... 很久最后error
原因是python3.6版本对最新版的opencv不完全支持,所以需要提前安装降级版
pip install opencv-python==4.3.0.38
然后再使用
pip install -e '.[all]'
安装完整版gym
到此安装完成
后面还会有一些依赖不支持python3.6
比如Pyglet
使用
pip install pyglet==1.5.0
完成降级
运行如下代码(同样是保存为.py文件,然后用python运行)可以检测gym是否可以正常运行
import gym
env = gym.make('HandManipulateBlock-v0')
obs = env.reset()
num_steps = 10000
for step in range(num_steps):
# take random action
action = env.action_space.sample()
obs, reward, done, info = env.step(action)
env.render()
if done:
env.reset()
env.close()
如果出现openGL或者GLEW的报错,可能是你的显卡驱动掉了,N卡的话用nvidia-smi看看驱动是否正常。(其他的我也不知道了,看到别人还有用手动安装3.3版本的GLEW解决的,但是对我无效。)
结尾
没有特殊情况还是用新环境装新版本比较好orz,在2024年装老版本还是挺折磨的