Python项目导入config.py遇ModuleNotFoundError问题求助
解决ModuleNotFoundError: No module named 'app'问题
核心原因
你在app目录内部直接运行项目,导致Python的模块搜索路径(sys.path)未包含app的上级目录,无法识别app顶级包;而相对导入from ..config import db仅在包内部被导入时有效,直接运行脚本会失效。
解决方案
方案1:从项目根目录运行(推荐)
假设你的项目结构为(app是根目录下的子文件夹):
your_project/ └── app/ ├── config.py ├── main.py └── routers/ └── users.py
切换到your_project目录(即app的上级目录),用以下命令启动项目:
python -m app.main
这种方式会将项目根目录加入Python模块搜索路径,此时在routers/users.py中使用绝对导入:
from app.config import db
即可正常导入。
方案2:手动添加模块搜索路径(临时解决)
若必须在app目录下运行,可在routers下的脚本(如users.py)开头添加以下代码,将app的上级目录加入搜索路径:
import sys from pathlib import Path # 获取app目录的上级目录路径并加入sys.path sys.path.append(str(Path(__file__).parent.parent.parent))
之后使用from app.config import db即可导入成功。
注意事项
- 不要直接运行
routers下的单个脚本(如python routers/users.py),这会让脚本成为顶层模块,相对导入失效。 - 确保所有文件夹(
app、routers、models等)都存在__init__.py文件(你的目录结构已满足此要求)。
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

