OVH部署Flask项目报错ImportError: No module named 'flask'如何解决
报错根因分析
- 初始报错的核心原因:OVH默认使用的Passenger进程加载的是系统全局Python 3.5环境,你本地创建的
my_py3_env虚拟环境没有被激活,全局环境中未安装Flask依赖,因此触发导包失败。 - 新增配置后仍然报错的原因是你的
.platform.app.yaml存在两处核心配置错误:- 依赖文件名不匹配:你本地的依赖清单命名为
requirement.txt,但构建钩子中写的是pip install -r requirements.txt(多了后缀s),构建流程根本没有读取到你的依赖清单,自然没有安装Flask。 - 启动命令指向的WSGI入口不存在:你配置的启动命令是
gunicorn -b $PORT project.wsgi:application,但你的项目中既没有project目录,也没有wsgi.py文件,无法找到对应应用实例。
- 依赖文件名不匹配:你本地的依赖清单命名为
修复方案
- 统一依赖文件名:要么将你本地的
requirement.txt重命名为requirements.txt,要么将构建钩子中的命令修改为pip install -r requirement.txt,保证两边命名一致。 - 在app.py同级目录新增
wsgi.py文件,内容如下:
from app import app if __name__ == "__main__": app.run()
- 修正
.platform.app.yaml中的启动命令,替换为:
start: "gunicorn -b $PORT wsgi:app"
- (可选)如果你要继续使用本地的
my_py3_env虚拟环境,可以在启动命令中指定虚拟环境的Python解释器路径,无需手动激活。 - 补充修复模板不匹配问题:你当前代码中写的是
render_template('test.html'),但templates目录下只有index.html,建议两边统一命名,避免后续出现模板找不到的报错。 - 如果你使用Passenger模式部署,可额外在项目根目录新增
passenger_wsgi.py文件,内容和上述wsgi.py一致即可。
内容的提问来源于stack exchange,提问作者Guliup
相关产品推荐
相关产品推荐

