windows 上安裝 mujoco_py

為了嘗試一下 cs294 課程的作業(yè),配環(huán)境配了一天多。

Deep RL Assignment 1: Imitation Learning Fall 2017 作業(yè)要求上一句輕描淡寫(xiě):

  1. MuJoCo: We will use MuJoCo for physics simulation in this assignment. Download version 1.31 from mujoco.org and obtain a license from the course instructors. Note that we use version 1.31 and not the latest version 1.50. The python interface to mujoco bundled with OpenAI gym is also compatible with this version of mujoco.

前面一直出 bug 的是 gym:

Traceback (most recent call last):                                                                      
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 143, in spec       
    return self.env_specs[id]                                                                           
KeyError: 'Humanoid-v1'                                                                                 
                                                                                                        
During handling of the above exception, another exception occurred:                                     
                                                                                                        
Traceback (most recent call last):                                                                      
  File "run_expert.py", line 71, in <module>                                                            
    main()                                                                                              
  File "run_expert.py", line 37, in main                                                                
    env = gym.make(args.envname)                                                                        
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 167, in make       
    return registry.make(id)                                                                            
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 118, in make       
    spec = self.spec(id)                                                                                
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 151, in spec       
    raise error.DeprecatedEnv('Env {} not found (valid versions include {})'.format(id, matching_envs)) 
gym.error.DeprecatedEnv: Env Humanoid-v1 not found (valid versions include ['Humanoid-v2'])             

感謝最后一句的提醒,估計(jì)是什么更新了吧,v1沒(méi)有了,我換成了 v2,這一句終于能過(guò)掉了。由于還沒(méi)有裝 mujoco,錯(cuò)誤變成了:

(cs294hw1) C:\ProjectsData\machineLearning\ACMCourse2\cs294\homework\hw1>python run_expert.py experts\Humanoid-
v1.pkl Humanoid-v2 --render --num_rollouts 20                                                                  
loading and building expert policy                                                                             
obs (1, 376) (1, 376)                                                                                          
loaded and built                                                                                                                                                        
……(此處略去幾十行)
Traceback (most recent call last):                                                                             
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\mujoco\mujoco_env.py", line 11, in <module>      
    import mujoco_py                                                                                           
ModuleNotFoundError: No module named 'mujoco_py'                                                               

安裝 mujoco_py 和 mujoco

我開(kāi)始安裝 mujoco_py。據(jù) 博客 提示,1.3.1 mjpro對(duì)應(yīng)的0.5.7py,我就去 pip3.5 install mujoco_py==0.5.7 ,一切順利。

然后 import mujoco_py時(shí),發(fā)生錯(cuò)誤:

>>> import mujoco_py                                                                                           
Traceback (most recent call last):                                                                             
  File "<stdin>", line 1, in <module>                                                                          
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\__init__.py", line 2, in <module>             
    init_config()                                                                                              
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\config.py", line 33, in init_config             
    raise error.MujocoDependencyError('To use MuJoCo, you need to either populate ~/.mujoco/mjkey.txt and ~/.mujoco/mjpro131, or set the MUJOCO_PY_MJKEY_PATH and MUJOCO_PY_MJPRO_PATH environment variables appropriately. Follow the instructions on https://github.com/openai/mujoco-py for where to obtain these.')                      
mujoco_py.error.MujocoDependencyError: To use MuJoCo, you need to either populate ~/.mujoco/mjkey.txt and ~/.mujoco/mjpro131, or set the MUJOCO_PY_MJKEY_PATH and MUJOCO_PY_MJPRO_PATH environment variables appropriately. Follow the instructions on https://github.com/openai/mujoco-py for where to obtain these.                                                                                                   

好吧,我確實(shí)還沒(méi)有找 key。我到官網(wǎng)注冊(cè)了MuJoCo Pro Trial License: 30 days,從郵箱下載了 LICENSE.txtmjkey.txt。同時(shí)在官網(wǎng) 下載了mjpro131 win64,解壓到了C:\Program Files\mujoco文件夾。我不僅把兩個(gè)文件瘋狂地復(fù)制到了C:\Program Files\mujoco、C:\Program Files\mujoco\mjpro131 以及 C:\Program Files\mujoco\mjpro131\bin,系統(tǒng)環(huán)境變量也加進(jìn)去了,如下圖,(這里其實(shí)還寫(xiě)錯(cuò)了,KEY的應(yīng)該具體到文件)結(jié)果還是不行。

系統(tǒng)環(huán)境變量

這都不行,issue里也搜索不到有幫助的信息,那,只能,去改掉報(bào)錯(cuò)的文件了(微笑)。我去看了文件C:\anaconda3\envs\cs294hw1\Lib\site-packages\mujoco_py\config.py,發(fā)現(xiàn)寫(xiě)道 _key_path = os.environ.get('MUJOCO_PY_MJKEY_PATH')
自己嘗試這句話,果然是拿不到的。

(后來(lái)發(fā)現(xiàn)還是我蠢,我沒(méi)有重啟一下命令行,好像重開(kāi)一個(gè)才會(huì)拿到新的環(huán)境變量= =這樣的話應(yīng)該是只要添加了環(huán)境變量就OK了)

C:\Users\shens                                                                            
λ python                                                                                  
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information.                    
>>> import os                                                                             
>>> _key_path = os.environ.get('MUJOCO_PY_MJKEY_PATH')                                    
>>> print(_key_path)                                                                      
None                                                                                                                                     

然后下面給了 default 值竟然是按照 Linux 的寫(xiě)法寫(xiě)的,怪不得沒(méi)有這個(gè)路徑……為了杜絕后患,我把這一大段 if 不 if 的都改掉了,直接暴力賦值

    _key_path = os.path.expanduser('C:\\Program Files\\mujoco\\mjpro131\\bin\\mjkey.txt')
    mjpro_path = os.path.expanduser('C:\\Program Files\\mujoco\\mjpro131')

這下終于過(guò)了,不過(guò)報(bào)錯(cuò)變成了

(cs294hw1) C:\ProjectsData\machineLearning\ACMCourse2\cs294\homework\hw1>python                               
Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 12:30:02) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.                                        
>>> import mujoco_py                                                                                          
Traceback (most recent call last):                                                                            
  File "<stdin>", line 1, in <module>                                                                         
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\__init__.py", line 4, in <module>              
    from .mjviewer import MjViewer                                                                            
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\mjviewer.py", line 7, in <module>              
    from . import mjcore, mjconstants, glfw                                                                   
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\mjcore.py", line 6, in <module>                
    from .mjlib import mjlib                                                                                  
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\mujoco_py\mjlib.py", line 21, in <module>                
    mjlib = cdll.LoadLibrary(os.path.abspath(libfile))                                                        
  File "C:\anaconda3\envs\cs294hw1\lib\ctypes\__init__.py", line 426, in LoadLibrary                          
    return self._dlltype(name)                                                                                
  File "C:\anaconda3\envs\cs294hw1\lib\ctypes\__init__.py", line 348, in __init__                             
    self._handle = _dlopen(self._name, mode)                                                                  
OSError: [WinError 193] %1 不是有效的 Win32 應(yīng)用程序。                                                                  

這次 stackoverflow拯救了我。按照高贊回答說(shuō)的,修改掉一個(gè)文件名,順便直接把系統(tǒng)標(biāo)成 win 后,這位大爺終于不報(bào)錯(cuò)了(您這個(gè)庫(kù)完全是按照 Linux 的文件系統(tǒng)寫(xiě)的,根本沒(méi)有照顧過(guò) win 的情緒好不好)。去跑了 mujoco 的示例模型,能跑出來(lái)了。

自帶的humanoid.xml模型

收拾 gym

這時(shí)候我去運(yùn)行題目, gym 又出問(wèn)題了,

>>> import gym                                                                                           
>>> env = gym.make('Humanoid-v2')                                                                        
Traceback (most recent call last):                                                                       
  File "<stdin>", line 1, in <module>                                                                    
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 167, in make        
    return registry.make(id)                                                                             
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 119, in make        
    env = spec.make()                                                                                    
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\registration.py", line 86, in make         
    env = cls(**self._kwargs)                                                                            
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\mujoco\humanoid.py", line 12, in __init__  
    mujoco_env.MujocoEnv.__init__(self, 'humanoid.xml', 5)                                               
  File "C:\anaconda3\envs\cs294hw1\lib\site-packages\gym\envs\mujoco\mujoco_env.py", line 27, in __init__
    self.model = mujoco_py.load_model_from_path(fullpath)                                                
AttributeError: module 'mujoco_py' has no attribute 'load_model_from_path'                               

還好 github 上有兩個(gè) issue 244, 192,說(shuō)使用python 3.6, mujoco 0.5.7 with the mjpro131 package installed and gym 0.9.1這一整套配置就可以了。我驚喜地發(fā)現(xiàn)我默認(rèn)安裝了gym 0.10.5,我改成pip install gym==0.9.1,終于 work 了……

小人夕陽(yáng)下的奔跑,是我配環(huán)境逝去的一天

現(xiàn)在我已經(jīng)沒(méi)有耐心寫(xiě)作業(yè)了,手動(dòng)再見(jiàn)……

下午更新

我想用 jupyter 寫(xiě)作業(yè),發(fā)現(xiàn)那邊虛擬環(huán)境還要配置。參考了簡(jiǎn)書(shū)文章的后半部分,

# 安裝ipykernel 庫(kù)
conda install -n cs294hw1 ipykernel
# (在虛擬環(huán)境中)注冊(cè)環(huán)境
python -m ipykernel install --user

應(yīng)該是我遺漏了參數(shù),這個(gè)環(huán)境被命名為 python3 了,我去C:\Users\shens\AppData\Roaming\jupyter\kernels\python3中找 json 文件改了一下。好啦開(kāi)始寫(xiě)作業(yè)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 刪掉重新來(lái)一次吧,記得改那個(gè)腳本修改 /home/ubuntu/eos/scripts/install_depen...
    盧衍泓閱讀 1,386評(píng)論 0 1
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,841評(píng)論 0 10
  • 從個(gè)體創(chuàng)作到資本聯(lián)姻,從一個(gè)papi醬到可容納無(wú)數(shù)papi醬的papitube,資本主導(dǎo)下的內(nèi)容創(chuàng)業(yè)時(shí)代已經(jīng)正式到...
    易姐撩自媒閱讀 569評(píng)論 0 1
  • 2017.12.14日星期四天氣雨夾雪第十八篇 今天回來(lái)已經(jīng)八點(diǎn)半了,孩子做完作業(yè)準(zhǔn)備睡覺(jué)呢!給孩子們打過(guò)招呼后媳...
    二六班王佳欣閱讀 249評(píng)論 0 0
  • "我就想踏踏實(shí)實(shí)找一個(gè)人一起生活,我喜歡他他喜歡我,沒(méi)有秘密,沒(méi)有出軌,沒(méi)有不開(kāi)心,性格不合適可以磨合,習(xí)慣不一樣...
    記憶橡皮閱讀 469評(píng)論 0 2

友情鏈接更多精彩內(nèi)容