为什么导入序列会产生错误?

时间:2012-08-13 06:23:21

标签: python importerror

我有三个文件,导入语句按以下方式完成:

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。为什么会这样?

2 个答案:

答案 0 :(得分:1)

当您运行main.py时,它会执行第一行,即导入file1.py。这会导致file1.py运行。它尝试从main.py导入,但请记住,到目前为止只有main.py的第一行已运行 - someFunc尚未定义。因此,导入失败。

答案 1 :(得分: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()