🎮

今更GymRetroを動かす

2024/05/12に公開

概要

OpenAIが以前開発を進めていた Gym Retro を動かします。

こちらは、2020年で更新が止まっており、こちらが参照している Gym も
2022年で更新が終了しています。

なので、普通にセットアップを進めてもまともに動かなかったので、
動かすまでに行った事を記載します。

関連サイト

https://github.com/openai/retro

https://github.com/openai/gym

環境

OS: Windows11
Anaconda: conda 24.3.0

手続き

専用環境の作成

古いバージョンのものを多く利用するので、
普段使っている Python 環境とは別で作業をすることをおすすめします。

という事で、まずは Anaconda で専用環境を作りました。
pythonはgym-retroが使える最大の 3.8 にしてます。
GymRetroEnv は環境名なのでお好きに変更ください。

conda create -n GymRetroEnv python=3.8

作成できたら環境を切り替えます。

conda activate GymRetroEnv

Gym Retro のインストール

Gym Retro をインストールします。
特にバージョン指定せず最新にしました。

pip install gym-retro

setuptool と pip のダウングレード

Gym Retro 実行時、retro.make を行う際に hash チェックが行われますが、
これは Gym の機能で、最新バージョンでは既にこの関数が存在しません。
なのでダウングレードします。

ただし、この関数は 0.25 に戻すことで使えるのですが、
更にその後、 Gym のレンダリング部分でエラーが発生してしまうので、
0.21 にまで落とす必要がありました。

しかしながら、 0.21 にダウングレードしようとするとエラー出てしまう為、
setuptoolpip もダウングレードが必要でした。

なので、まずはそれらのダウングレードします。

pip install --upgrade pip wheel==0.38.4 setuptools==65.5.1

関連サイト

https://www.reddit.com/r/reinforcementlearning/comments/uklf29/no_module_named_gymenvsclassic_controlrendering/

https://stackoverflow.com/questions/73710249/openai-gym-retro-error-attributeerror-module-gym-utils-seeding-has-no-attri

gym のダウングレード

これでようやく gym のダウングレードが可能となります。
以下を実行してください。

pip install gym==0.21.0

実行終了時の問題

これで、実行はできるようになりますが、
自分の環境だとゲーム終了なのでWindowを閉じる際に以下のようなエラーが出てしまいました。

Exception ignored in <bound method SimpleImageViewer.__del__ of <gym.envs.classic_control.rendering.SimpleImageViewer object at 0x00000185FC3D4CF8>>
Traceback (most recent call last):
・・・(省略)
KeyError: <weakref at 0x000002A106F28540; to 'Win32Window' at 0x000002A1065E2D90>

詳細はわかりませんが、レンダリングの開放処理がうまく行ってなさそう?
ChatGPTに聞いたら以下を呼べば良いってことで、 env.close() 呼び出し前に
実行することでエラーが出なくなりました。

env.render(close=True)

関連サイト

https://github.com/openai/gym/issues/2768

Discussion