0
0

More than 1 year has passed since last update.

【python3】AttributeError: partially initialized module 'XXX' has no attribute 'make'への対処

Posted at

環境

Windows 10 Home
python 3.10

状況

小さなコードをテスト実行中に遭遇した。
その時のコードと、実行したときのエラー内容を以下に示す。

gym.py
import gym

env = gym.make('Pendulum-v1')
env.reset()

for i in range(20):
    action = env.action_space.sample()
    state, reward, done, info = env.step(action)

    print(f"action:{action}, state:{state}, reward:{reward}, done:{done}")
Traceback (most recent call last):
  File "C:\Users\work\gym.py", line 1, in <module>
    import gym
  File "C:\Users\work\gym.py", line 3, in <module>
    env = gym.make('Pendulum-v1')
AttributeError: partially initialized module 'gym' has no attribute 'make' 
(most likely due to a circular import)

「部分的な初期化」とは何を意味するのだろう?
circular importが原因と言われても、具体的にどうすれば?

結論

問題なのはgym.pyというファイル名である。

インストールしたモジュール(もしくは標準モジュール)と同じファイル名をつけていると、循環参照が発生しAttributeErrorが起きる。ファイル名を「gym_test.py」など適当に変更するとエラーが消える。

参照

後ほど調べたところ、ファイル名とモジュール名を同じにした時にエラーが起きる旨が書かれていた。

記事投稿者様へ

参考としてコードを載せることが頻繁にあると思います。その時にファイル名にも(ほんの少しだけ)気を払っていただくと、予期せぬエラーで新しく学ぶ方が詰まるということが減るかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0