pythonループインポート

755 ワード

Flaskの学習中に発生したループインポートの問題を記録します.
ループインポートとは?
栗はとても簡単で、今a.py、b.py、c.pyの3つのバッグがあって、b.pyの中でa.pyを導入して、c.pyの中でb.pyを導入して、a.pyの中でc.pyを導入して、それから勝手に1つのファイルを入り口にしてプログラムを実行します
a.pyをプログラムの入り口とすると、次のようになります.
import c

def test():
    print('this a')

c.test()

a.pyを実行するとインポートエラー(以下のように)が報告されます.詳しくはcore-python(pythonコアプログラミング)で紹介されています.時間があればご覧ください.
ImportError: cannot import name XX

ポイントは、どのように解決するかです.
  • (直接最も現実的な方法)は、ループを生成するパケットを関数に入れて呼び出す.例えば、さっきのa.pyはこのように
    def test():
    print('this a')
    
    def run():
    import c
    c.test()
  • に変更することができる.
  • プログラムの実行順序を知っていればimport順序を調整する方法で解決することもできますが、私が試みた結果、これは100%の問題を解決することはできません.
  • (究極の解決策)再構築しましょうか(逃げる.)