windows 10、Python 3.6 環境下安裝OpenAI Gym

OpenAI Gym發布兩年以來,官方一直沒有給出windows版支持。而我只有一台普通的win10台式機,之前一直通過虛擬機上安裝Ububtu來學習該框架,但是無奈電腦太差,而且虛擬機下不支持CUDA,只好想辦法解決windows下安裝gym的問題。

今天無意中看到OpenAI Gym 在windows下的配置和使用介紹的安裝方法,但是存在如下問題:

  1. 作者僅在python2.7的環境下安裝成功;
  2. 對於錯誤「NameError: name PUINT is not defined的解決不太友好
  3. 安裝PyOpenGL的過程過於複雜
  4. Box2D沒有安裝

我經過研究,在該python2.7(Anaconda)環境下解決了上述問題

  1. 錯誤2可通過NameError: name PUINT is not defined介紹的方式解決,僅僅需要在PUINT所在處的上一行增加『PUINT = POINTER(UINT)』即可解決
  2. 安裝PyOpenGl只需要運行conda install pyopengl
  3. Box2D僅需要從Python Extension Packages for Windows下載對應的Box2D包,然後通過pip的方式安裝即可。

安裝過程

但是我比較希望使用python3,所以嘗試了下python3.6(Anaconda3 5.1.0)下安裝的過程,發現很成功。以下對安裝過程做簡要介紹,其中部分代碼來自於OpenAI Gym 在windows下的配置和使用,後文不再逐個說明。

首先安裝最小化的gym,在cmd下運行:

pip install gym -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

然後執行以下測試代碼:

import gymtest_envs={algorithm:Copy-v0, toy_text:FrozenLake-v0, control:CartPole-v0, # option:MountainCar-v0 atari:SpaceInvaders-v0,# options:Breakout-ram-v4,Seaquest-v0, mujoco:Humanoid-v1, # not feasible on Win10 box2d:LunarLander-v2 } # not feasible on Win10game_name = test_envs[algorithm]env = gym.make(game_name)for i_episode in range(20): observation = env.reset() for t in range(100): env.render() print(observation) action = env.action_space.sample() observation, reward, done, info = env.step(action) if done: print("Episode finished after {} timesteps".format(t+1)) break

其中『algorithm』和『toy_text』的測試沒有問題。

前文中在python2.7的環境下遇到的『PUINT』和PyOpenGL問題在這裡沒有遇到,可能新裝的Anaconda已經默認安裝了PyOpenGL,如果沒有安裝的話,通過conda install pyopengl安裝即可。

遇到的問題

Traceback (most recent call last): File "D:CodingAnaconda3libsite-packagesgymenvsclassic_control
endering.py"
, line 143, in __del__ File "D:CodingAnaconda3libsite-packagesgymenvsclassic_control
endering.py"
, line 62, in close File "D:CodingAnaconda3libsite-packagespygletwindowwin32\__init__.py", line 305, in close File "D:CodingAnaconda3libsite-packagespygletwindow\__init__.py", line 770, in closeImportError: sys.meta_path is None, Python is likely shutting down

該錯誤似乎並沒有實質性的影響,但是留著它很令人難受。

我雖然找到了別人的討論ImportError: sys.meta_path is None, Python is likely shutting down · Issue #893 · openai/gym,但是沒有看懂他們的解決辦法,而且他們好像是在linux下遇到的該錯誤。希望有人看懂該解決方法後告訴我。。。

鑒於該錯誤並沒有太大影響,我用了一種極端的方式去除它。

找到錯誤所在代碼:

Anaconda3libsite-packagesgymenvsclassic_control
endering.py, line 62.

錯誤代碼如下:

def close(self): self.window.close()

然後用try...except包裹起來:

def close(self): try: self.window.close() except: pass

後面遇到相同錯誤時,我都是這樣解決的。

安裝Atari

pip install --no-index -f https://github.com/Kojoley/atari-py/releases atari_py -i https://pypi.tuna.tsinghua.edu.cn/simple/

安裝Box2D

從Python Extension Packages for Windows下載相應的whl文件。

我下載的是Box2D?2.3.2?cp36?cp36m?win_amd64.whl。

然後通過pip的方式安裝即可。

至於mujoco,我尚沒有找到辦法安裝。


推薦閱讀:

親手教的AI總是放心些
他這個Z炮是怎麼壓到我的?——OpenAI解釋Dota2AI的實現過程
強化學習快速上手:編寫自定義通用gym環境類+主流開源強化學習框架調用
Ciyous Note: 遺傳演算法與進化策略
熵最大化和智能行為

TAG:OpenAI | 強化學習ReinforcementLearning | 人工智慧 |