Python 为什么此导入序列会生成错误?

Python 为什么此导入序列会生成错误?,python,importerror,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() class A: def __init__(self): pass from

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

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()
class A:
    def __init__(self):
        pass
from main import someFunc as sayHi
sayHi()
file2.py

from file1 import *
a = A()
from file1 import *
a = A()

一旦写入file1.py中的导入行,就会出现以下错误:
ImportError:无法导入名称someFunc
。使用另一个编译器,我得到了
namererror:Name'A'没有定义
。为什么会这样?

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

您需要将文件1和文件2导入向下移动到文件的底部,以使其正常工作,不过最好避免循环导入

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

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

from file1 import *
a = A()
from file1 import *
a = A()

您需要
file1
而不是
file1.py
——请记住,导入是通过python模块名,而不是文件名。