Flask部署至Render.com遇jinja2.TemplateNotFound问题求助
排查与解决Flask部署至Render.com的TemplateNotFound问题
1. 修复Flask路径配置(核心解决思路)
本地开发时相对路径可能正常,但部署到Linux环境的Render时,工作目录或路径解析逻辑会变化,改用基于文件绝对路径配置模板/静态文件夹更可靠:
修改app/__init__.py:
import os from dotenv import load_dotenv from flask import Flask load_dotenv() # 获取当前文件所在目录的绝对路径(app文件夹的路径) base_dir = os.path.abspath(os.path.dirname(__file__)) # 基于绝对路径配置模板和静态文件夹 app = Flask(__name__, static_folder=os.path.join(base_dir, 'static'), template_folder=os.path.join(base_dir, 'templates')) from app import views
2. 检查文件名大小写
Render运行在Linux系统上,文件名严格区分大小写。确认app/templates/下的模板文件是小写的index.html,而非Index.html或其他大小写组合(本地Windows/macOS默认不区分大小写,不会报错)。
3. 修正启动入口文件(run.py)
你的run.py缺少必要的导入语句,部署时会导致app实例无法被正确识别:
修改run.py:
from app import app, db # 补充导入app和db实例 if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True)
4. 确认Render的启动命令
在Render的服务设置中,将启动命令设置为:
gunicorn run:app
该命令指向run.py中的app实例,是Python Web应用部署的标准方式。
5. 检查Git提交与.gitignore
- 确认
app/templates/文件夹已被提交到Git仓库,没有被.gitignore规则忽略。 - 若templates文件夹未提交,执行以下命令并推送:
git add app/templates/ git commit -m "Add templates folder" git push
6. 验证项目根目录
在Render的部署设置中,确认根目录是包含app文件夹和run.py的顶层目录,而非进入了app子目录。
内容的提问来源于stack exchange,提问作者pchryss
相关产品推荐
相关产品推荐

