使用MuJoCo-py包为MuJoCo物理库绑定Python

Python binding for MuJoCo physics library using mujoco-py package

本文关键字:绑定 Python MuJoCo-py 包为 MuJoCo 使用      更新时间:2023-10-16

我想使用MuJoCo(http://www.mujoco.org/),一个具有python绑定的高级物理模拟器(https://github.com/openai/mujoco-py)。

我得到了我的MuJoCo许可证文件mjkey.text,并相应地将所需的路径MuJoCo_PY_mjkey_PATH、MuJoCo_PY_MJPRO_PATH添加到环境变量中。

MUJOCO_PY_MJPRO_PATH = C:DropboxPhDMuJoComjpro131
MUJOCO_PY_MJKEY_PATH = C:DropboxPhDMuJoComjpro131bin

然而,一旦我想导入带有以下简单代码的库,

import mujoco_py

我收到以下错误消息。

C:DropboxPythonAnacondapython.exe
C:/Dropbox/PhD/Python/X/MujocoHelloWorld/test.py
Traceback (most recent call last):
  File "C:/Dropbox/PhD/Python/X/MujocoHelloWorld/test.py", line 1, in <module>
    import mujoco_py
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "C:DropboxPythonAnacondalibsite-packagesmujoco_py-0.5.4-py3.5.eggmujoco_py__init__.py", line 4, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "C:DropboxPythonAnacondalibsite-packagesmujoco_py-0.5.4-py3.5.eggmujoco_pymjviewer.py", line 7, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "C:DropboxPythonAnacondalibsite-packagesmujoco_py-0.5.4-py3.5.eggmujoco_pymjcore.py", line 6, in <module>
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "C:DropboxPythonAnacondalibsite-packagesmujoco_py-0.5.4-py3.5.eggmujoco_pymjlib.py", line 21, in <module>
  File "C:DropboxPythonAnacondalibctypes__init__.py", line 425, in LoadLibrary
    return self._dlltype(name)
  File "C:DropboxPythonAnacondalibctypes__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application
Process finished with exit code 1

我在Windows 7 64位和MuJoCo 1.31 64位上使用Python 3.5.1 64位。

我猜问题是由于某种不兼容,我还尝试了Python 3.5.2 32位与MuJoCo 1.31 32位。甚至,我尝试了非逻辑的32位Python和64位MuJoCo组合,反之亦然。

MuJoCo库中已经编译好的给定示例"simulate.exe"运行良好。所以,我想我拥有的64位MuJoCo库没有问题。(顺便说一句,32位版本的不能在64位Windows上运行(

因此,将C++库加载到Python时可能会出现此问题。我调试并至少检查了mujoco_py库中的Python代码是否试图从正确的路径加载"mujoco131.lib"(但不是"mujoko131.dll"(。然后出现错误,代码无法继续运行。

我愿意接受任何意见和建议。。

干杯!祝你今天过得愉快!

尝试编辑mjlib.py,在加载程序中将"bin/mujoco131.lib"替换为"bin/mujoco131.dll"

我还必须在platname_targdir.py 中明确指定platname = "win"