整理されてないコードを書いた結果、エラーが出た。
エラー内容
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が無限ループしてしまっている。
解決法
グローバルインポートじゃなくて、ローカルインポートにする。
元のコード
code1.py
from code2 import my_function1
def main():
my_function1()
是正したコード
code1.py
def main():
from code2 import my_function1
my_function1()
これは、対処療法的に思えるので、根本的にはインポートの主従関係を明白にした方が良いと思う。