Heroku部署Flask应用报错:ModuleNotFoundError: No module named 'data_collector'
解决Heroku部署Flask时找不到同目录模块的问题
可能的原因及解决方案
1. 文件名大小写不匹配
Heroku基于Linux环境,文件名严格区分大小写,但本地Windows/macOS默认不区分。如果本地文件名和Git提交的文件名大小写不一致(比如本地是Data_Collector.py,远程是data_collector.py),就会触发模块找不到的错误。
- 解决:统一本地与远程的文件名大小写,再重新提交代码:
git mv Data_Collector.py data_collector.py git add . git commit -m "修正文件名大小写" git push heroku main
2. 模块文件未被Git追踪
如果data_collector.py被加入.gitignore,或者从未执行过git add命令,Heroku服务器上不会存在这个文件。
- 解决:检查
.gitignore文件,确保未排除data_collector.py;执行以下命令提交文件:git add data_collector.py git commit -m "添加data_collector模块文件" git push heroku main
3. Python路径未包含当前目录
本地运行时当前目录默认在Python路径中,但Heroku的运行环境可能存在路径识别问题。可以手动将当前目录加入Python路径:
- 修改
app.py开头代码:import sys from os.path import abspath, dirname sys.path.insert(0, dirname(abspath(__file__))) from flask import Flask, render_template from data_collector import collect_data import sqlite3
4. 缺少__init__.py文件
若项目需要被识别为Python包,缺少空的__init__.py文件可能导致模块无法被正常导入。
- 解决:在
app.py同目录创建空的__init__.py,并提交到Git:touch __init__.py git add __init__.py git commit -m "添加__init__.py以支持包结构" git push heroku main
验证方法
部署后可通过Heroku命令行查看服务器文件结构,确认data_collector.py存在:
heroku run ls -l
内容的提问来源于stack exchange,提问作者Burke Morse
相关产品推荐
相关产品推荐

