我正在用Python构建一个小项目。我的结构是这样的:
src
- module_a
- __init__.py
- helper.py
- module_b
- __init__.py
- utils.py
- __init__.py
- main_script.py
这很有效:
# src __init__ file contents
from src import module_a, module_b
# module_a __init__ file contents
from module_a.helper import func1
# module_b __init__ file contents
from module_b.utils import func2
这不起作用
# src __init__ file contents
from src import module_a, module_b
# module_a __init__ file contents
from src.module_a.helper import func1
# module_b __init__ file contents
from src.module_b.utils import func2
这会引发一个错误No module named src
。这应该行得通,对吧?有人能详细解释一下为什么不起作用吗?
在第二种情况下,您还没有导入src,因此没有一个src模块可以访问其中的内容。from src import module_a, module_b
初始化模块module_a和module_b,并使用from src
部分来描述在哪里可以找到它们。因此,module_a和module_b是自由浮动对象,完全与src解除绑定。如果您希望它们成为src的属性,只需使用import src
,尽管您的工作案例似乎运行良好。此处提供更多详细信息:https://realpython.com/lessons/import-statement/