今更GymRetroを動かす
概要
OpenAIが以前開発を進めていた Gym Retro を動かします。
こちらは、2020年で更新が止まっており、こちらが参照している Gym も
2022年で更新が終了しています。
なので、普通にセットアップを進めてもまともに動かなかったので、
動かすまでに行った事を記載します。
関連サイト
環境
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
にダウングレードしようとするとエラー出てしまう為、
setuptool
と pip
もダウングレードが必要でした。
なので、まずはそれらのダウングレードします。
pip install --upgrade pip wheel==0.38.4 setuptools==65.5.1
関連サイト
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)
関連サイト
Discussion