Python 为什么此导入序列会生成错误?
我有三个文件,导入语句按以下方式完成: main.pyPython 为什么此导入序列会生成错误?,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
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模块名,而不是文件名。