2016-08-04 6 views
7

Я хочу использовать MuJoCo (http://www.mujoco.org/), продвинутый физический симулятор с привязками python (https://github.com/openai/mujoco-py).Связывание Python для библиотеки физики MuJoCo с использованием пакета mujoco-py

У меня есть файл лицензии mjkey.text MuJoCo и добавлены необходимые переменные MUJOCO_PY_MJKEY_PATH, MUJOCO_PY_MJPRO_PATH соответствующим переменным среды.

MUJOCO_PY_MJPRO_PATH = C:\Dropbox\PhD\MuJoCo\mjpro131 
MUJOCO_PY_MJKEY_PATH = C:\Dropbox\PhD\MuJoCo\mjpro131\bin 

Однако вскоре, как я хочу, чтобы импортировать libray следующим простым кодом,

import mujoco_py 

я получил следующее сообщение об ошибке.

C:\Dropbox\Python\Anaconda\python.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:\Dropbox\Python\Anaconda\lib\site-packages\mujoco_py-0.5.4-py3.5.egg\mujoco_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:\Dropbox\Python\Anaconda\lib\site-packages\mujoco_py-0.5.4-py3.5.egg\mujoco_py\mjviewer.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:\Dropbox\Python\Anaconda\lib\site-packages\mujoco_py-0.5.4-py3.5.egg\mujoco_py\mjcore.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:\Dropbox\Python\Anaconda\lib\site-packages\mujoco_py-0.5.4-py3.5.egg\mujoco_py\mjlib.py", line 21, in <module> 
    File "C:\Dropbox\Python\Anaconda\lib\ctypes\__init__.py", line 425, in LoadLibrary 
    return self._dlltype(name) 
    File "C:\Dropbox\Python\Anaconda\lib\ctypes\__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 

Я использую Python 3.5.1 64-бит на ОС Windows 7 64-бит с MuJoCo 1.31 64-битным.

Я догадался, что проблема связана с какой-то несовместимостью, я также попытался использовать Python 3.5.2 32-bit с MuJoCo 1.31 32-bit. Даже я пробовал нелогичную 32-битную комбинацию Python и 64-бит MuJoCo и наоборот.

Уже скомпилированный данный пример «simulate.exe» в библиотеке MuJoCo отлично работает. Итак, я думаю, что нет никакой проблемы с 64-битной библиотекой MuJoCo, которую у меня есть. (Кстати, 32-разрядная версия не работает в 64-разрядной Windows)

Таким образом, проблема должна возникнуть при загрузке библиотеки C++ на Python. Я отлаживал и хотя бы проверял, что код Python в библиотеке mujoco_py пытается загрузить «mujoco131.lib» (не «mujoco131.dll», хотя) с правильного пути. И затем возникает ошибка, и код не запускается дальше.

Я открыт для любого рода комментарии и предложения ..

Ура! И хорошего дня!

ответ

4

Попробуйте изменить mjlib.py, заменив "bin/mujoco131.lib" на "bin/mujoco131.dll" в загрузчик.

Я также должен был явно указать platname = "win" в platname_targdir.py

+0

Изменения действительно помогли избежать ошибки (ы). Большое спасибо. Но теперь импорт просто висит без ошибок. 'печать («эй»)' ' импорт mujoco_py' ' печать («эй») ' Этот код печатает первый«эй», а затем продолжает работать вечно .. Любые дальнейшие идеи? –

+0

Возможно, вы захотите попробовать понизить до python 3.4 через 'conda install python = 3.4' ' conda install mingw libpython numpy' – haversine

+0

Спасибо за предложение, но все еще не работаю. Я думаю, что это проблема конфигурации, хотя .. Если она работает на вас, вы можете записать версии зависимых библиотек. Или больше идей? : D –

 Смежные вопросы

  • Нет связанных вопросов^_^