
在 Flask 项目中,若子目录(如 resource/)未被识别为 Python 包,会导致 ModuleNotFoundError: No module named 'resource.user';只需在该目录下添加空的 __init__.py 文件即可启用包导入机制。
在 flask 项目中,若子目录(如 `resource/`)未被识别为 python 包,会导致 `modulenotfounderror: no module named 'resource.user'`;只需在该目录下添加空的 `__init__.py` 文件即可启用包导入机制。
要使 Python 将一个目录识别为可导入的包(package),该目录下必须包含一个名为 __init__.py 的文件(可以为空)。在你的项目结构中:
app/ ├── resource/ ← 缺少 __init__.py → 不是包,无法 import │ └── user.py ├── app.py
当前 from resource.user import users 失败的根本原因是:resource 目录没有 __init__.py,Python 不将其视为合法包,因此 resource.user 路径无效,报错 No module named 'resource.user'; 'resource' is not a package。
✅ 正确做法:
在 app/resource/ 目录下创建空文件 __init__.py:
touch app/resource/__init__.py
此时目录结构变为:
app/ ├── resource/ │ ├── __init__.py ← 关键!启用包机制 │ └── user.py ├── app.py
随后,app.py 中的导入语句即可正常工作:
# app/app.py from resource.user import users # ✅ 现在可成功导入 from flask import Flask app = Flask(__name__) app.register_blueprint(users) # 示例:注册蓝图
⚠️ 注意事项:
- __init__.py 文件名必须严格为双下划线开头+结尾(__init__.py),拼写错误(如 _init.py 或 init.py)将无效;
- 即使文件为空,也足以让 Python 将目录识别为包;你也可在其中添加包级导出(例如 from .user import users),便于更简洁的导入方式;
- 确保运行 Flask 应用时,当前工作目录是 app 的父目录(即 app/ 是子目录),或已将项目根路径加入 PYTHONPATH,否则仍可能因路径问题导入失败。
? 小结:这不是 Flask 特有问题,而是 Python 模块系统的通用规则——无 __init__.py,无包;无包,不可相对/绝对导入。添加 __init__.py 是解决此类 ModuleNotFoundError 最基础、最有效的一步。











