我有三个文件,导入语句按以下方式完成:
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 :(得分: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()