TopFolder -
-FirstFolder
-SecondFolder
-main.py
在main.py内部:
from TopFolder import *
我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'TopFolder'
答案 0 :(得分:0)
我认为您正在尝试将FirstFolder
和SecondFolder
模块导入main。
现在,尝试执行from TopFolder import *
将导致循环导入,因为main将自身进行导入(main.py是*的一部分),这将再次执行import *
,...等等。此外,建议不要进行import *
(请参阅Why is “import *” bad?
)。
更好的解决方案是将FirstFolder和SecondFolder定义为packages。
然后从main中的那些包中导入特定的模块。
TopFolder
|- FirstFolder
|- __init__.py
|- foo1.py
|- SecondFolder
|- __init__.py
|- foo2.py
|- main.py
在foo1.py中:
def bar1():
return "bar 1"
在foo2.py中:
def bar2():
return "bar 2"
在main.py中:
# from TopFolder import * # Don't do this
from FirstFolder import foo1
from SecondFolder import foo2
print(foo1.bar1())
print(foo2.bar2())
结果:
$ python3 main.py
bar 1
bar 2