ImportError: cannot import name
Python 2.7
どツボった。
ImportError: cannot import name
■事象
以下のようなモジュール構造で、互いにモジュールを呼び合う場合に発生。
view\ __init__.py form1.py form2.py
・form1.py
from veiw.fom2 import frm2 class frm1 (): ....
・form2.py
from veiw.fom1 import frm1 class frm2 (): ....
■原因
インポート時に、自分自身をインポートしているためにエラーとなっている(と思う)
ちなみに、組み込みモジュールと同じ名前のモジュールを作成した時も発生する。
■解決策
グローバルな箇所でインポートをするのではなく、クラス内でインポートする。
例えば、コンストラクタ内や画面を呼び出す直前のファンクション内など。
・form1.py
class frm1 (): def __init__(self): from veiw.fom2 import frm2 self.fm = frm2()