8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ImportError: cannot import name の解決

Last updated at Posted at 2020-01-08

整理されてないコードを書いた結果、エラーが出た。

エラー内容

Traceback (most recent call last):
  File "code1.py", line 7, in <module>
    from code2 import my_function1
  File "/home/ubuntu/code2.py", line 9, in <module>
    import code3
  File "/home/ubuntu/code3.py", line 6, in <module>
    from code1 import my_function2
  File "/home/ubuntu/code1.py", line 7, in <module>
    from code2 import my_function1
ImportError: cannot import name 'my_function1'

原因

importが無限ループしてしまっている。

スクリーンショット 2020-01-08 12.13.46.png

解決法

グローバルインポートじゃなくて、ローカルインポートにする。

元のコード

code1.py
from code2 import my_function1
def main():
    my_function1()

是正したコード

code1.py

def main():
    from code2 import my_function1
    my_function1()

これは、対処療法的に思えるので、根本的にはインポートの主従関係を明白にした方が良いと思う。

関連記事

ImportError: cannot import nameを解消する

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?