我有这个文件结构
project
├── src
├── main
├── __init__.py
├── app.py
├── constants.py
└── test
├── __init__.py
└── test_commands.py
里面
app.py
,我导入constants.py
使用import constants
。如果我运行 python3 app.py
,这会很好用
在test_commands.py
里面我有from main import app
,这将正确导入它,但是它会出错:
File .../src/main/app.py", line 4, in <module>
import constants
ModuleNotFoundError: No module named 'constants'
但是,如果我将该行切换为
from main import constants
,那么它将起作用。然而,现在python3 app.py
不再有效:
File .../src/main/app.py", line 4, in <module>
from main import constants
ModuleNotFoundError: No module named 'main'
我该如何解决这个问题,以便两种情况都有效?这可能吗?在这种情况下导入模块的正确方法是什么?
尝试从模块内进行相对导入时,尝试使用
import .constants
代替
import constants
注意
.
,它表示您正在从模块内的本地文件导入,特别是从同一目录导入。
这也适用于
from
进口。例如,
from . import constants
查看这些资源以获取更多信息: