記錄前段時間學習 Flask 時遇到的循環導入問題python
栗子很簡單, 如今有a.py, b.py, c.py 三個包, b.py 中導入 a.py, c.py 中導入 b.py , a.py 中導入c.py, 而後隨便以一個文件爲入口執行程序編程
假如以 a.py 做爲程序入口, 大概就像下面這樣函數
import c def test(): print('this a') c.test()
如今執行a.py 就會報出導入錯誤(相似下面這個), 詳細介紹在 core-python (python 核心編程) 中有介紹, 有時間能夠看一下學習
ImportError: cannot import name XX
(直接最實在的方法) 將產生循環的包, 放在函數裏進行調用, 好比剛纔的 a.py 能夠改爲這樣this
def test(): print('this a') def run(): import c c.test()
若是瞭解程序的執行順序的話, 也能夠使用調整 import 順序的方法解決, 可是我嘗試的結果是: 這並不能100% 的解決問題code
(終極解決方案) 要不仍是重構吧 (逃..)class