兩個模組互相匯入,就形成了匯入迴圈,比如下面的這種情況
(x)from m2 import
xy = 20
(y)from m1 import
yx = 1
如果執行m1.py,則會產生`importerror: cannot import name 'y`
如果執行m2.py,則會產生`importerror: cannot import name 'x`
所以根本原因是:在匯入的時候,m1需要訪問m2的變數y,但是y沒有初始化完成
所以解決方法有兩個:
y初始化完成後,才讓m1.py訪問m2.py的變數
1m1.py(x)2
3def
func1():
4from m2 importx5
(x)6
7 y =20
1m2.py(y)2
3def
func1():
4from m1 importy5
(y)6
7 x = 1
1m1.py(x)2
3 y = 20
4from m2 import x
1m2.py(y)2
3 x = 1
4from m1 import y
先從記憶體中已經匯入的模組中尋找
內建的模組
自定製的函式中找
環境變數sys.path中找
主要記住未來專案的執行檔案一定要弄乙個環境變數
Python 模組匯入路徑
當使用python用import匯入模組時我們不需要在模組前面新增路徑,是因為python有預設的搜尋路徑,這一路徑可以通過呼叫system模組來顯示和修改。in 1 import sys in 2 sys.path out 2 home frank anaconda3 bin home frank...
Python 1 2模組的迴圈匯入問題
run.py檔案 importm1 第一次匯入 驗證解決方案一 正在匯入m1 正在匯入m2 print m1.x print m1.y 驗證解決方案二 importm1 第一次匯入 正在匯入m1 print m1.x print m1.f1 m1.f1 正在匯入m2 m1.f1 y m2 m2.f2...
Python匯入模組import的路徑
可以使用 import sys print sys.path 檢視import的預設搜尋路徑,使用import要匯入的檔案,必須要求要在這個預設路徑下。import sys print sys.path 假如要匯入的檔案,不在這些預設路徑下的話,那麼就要使用 from 路徑 import 模組 這樣...