2012-08-13 77 views
1

我有三個文件,import語句以下列方式進行:爲什麼此導入序列會產生錯誤?

main.py

from file1 import * 
from file2 import * 
def someFunc(): 
    print("hi") 

file1.py

from main import someFunc as sayHi 
class A: 
    def __init__(self): 
     pass 
sayHi() 

file2.py

from file1 import * 
a = A() 

只要寫入file1.py中的導入行,就會出現此錯誤:ImportError: cannot import name someFunc。和另一個編譯器,我得到NameError: Name 'A' is not defined。這是爲什麼?

+0

你需要'file1'不'file1.py' - 記住進口是通過Python模塊的名稱,而不是文件名。 – 2012-08-13 06:27:19

回答

1

當您運行main.py時,它將執行其第一行,該行將導入file1.py。這導致運行file1.py。它試圖從main.py導入,但請記住,目前只有第一行main.py已運行 - someFunc尚未定義。因此,該導入失敗。

0

您需要將file1和file2導入到文件的底部才能使其工作,儘管避免導入循環會更好。

def someFunc(): 
    print("hi") 
from file1 import * 
from file2 import * 

file1.py

class A: 
    def __init__(self): 
     pass 
from main import someFunc as sayHi 
sayHi() 

file2.py

from file1 import * 
a = A() 
相關問題