我可以导入一个模块,其中包含编写import语句的python文件吗?

2024-09-30 06:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

TopFolder -
          -FirstFolder
          -SecondFolder
          -main.py

内部主.py地址:

from TopFolder import *

我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'TopFolder'

Tags: frompyimportmostmain地址callfile
1条回答
网友
1楼 · 发布于 2024-09-30 06:19:08

我认为您要做的是将FirstFolderSecondFolder模块导入main。你知道吗

现在,尝试执行from TopFolder import *将导致循环导入,因为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"

在主.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

相关问题 更多 >

    热门问题