Flask服务器无法识别自定义模块(ModuleNotFoundError),如何正确声明?
Flask自定义模块导入报错解决办法
1. 先修正导入语法错误
你当前的导入代码存在语法问题:
from my_helpers.helper_1 as h1
正确写法二选一:
- 导入整个模块并设置别名:
import my_helpers.helper_1 as h1 - 导入模块内特定对象并设置别名(替换
目标对象为实际要导入的内容):from my_helpers.helper_1 import 目标对象 as h1
2. 将my_helpers转为Python可识别的包
在my_helpers子文件夹下创建一个空的__init__.py文件,Python会自动将包含该文件的文件夹识别为可导入的包。这个文件可以是空的,也可以添加包初始化逻辑(比如批量导出模块内容)。
3. 确保项目根目录在Python路径中
检查你的项目结构,确保wsgi.py所在的目录是项目根目录。如果仍有问题,可在主应用文件(或wsgi.py)开头添加以下代码,强制将项目根目录加入Python搜索路径:
import sys from pathlib import Path # 获取当前文件所在目录的父目录(即项目根目录) project_root = Path(__file__).parent sys.path.append(str(project_root))
注意:如果my_helpers并非在项目根目录下(比如在app子文件夹内),导入路径需要对应调整,例如:from app.my_helpers.helper_1 import ...
4. Heroku部署的额外检查点
- 确认
my_helpers文件夹、__init__.py和helper_1.py都已提交到Git仓库,没有被.gitignore规则排除 - 检查Procfile命令是否正确,比如使用gunicorn的话,Procfile内容应为:
web: gunicorn wsgi:app
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

