问题描述
我正在用 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/