jinja2.exceptions.TemplateNotFound报错:为何找不到imp.html?
排查Jinja2 TemplateNotFound错误的解决方案
嘿,这个问题我碰到过好多次,大概率是Jinja2的模板路径配置或者运行环境的问题,咱们一步步来排查:
检查模板目录的显式配置
Jinja2(包括基于它的Flask等框架)默认会在当前运行脚本的同级目录下寻找名为templates的文件夹,但你的模板放在了Downloads/template里,所以需要手动指定模板路径:- 如果用Flask:
import os from flask import Flask # 动态获取脚本所在目录,避免硬编码路径 script_path = os.path.dirname(os.path.abspath(__file__)) template_folder = os.path.join(script_path, "template") app = Flask(__name__, template_folder=template_folder) - 如果直接使用Jinja2核心库:
import os from jinja2 import Environment, FileSystemLoader script_path = os.path.dirname(os.path.abspath(__file__)) template_loader = FileSystemLoader(os.path.join(script_path, "template")) env = Environment(loader=template_loader) # 现在可以正常加载模板了 template = env.get_template("imp.html")
- 如果用Flask:
确认文件夹名称拼写
很多框架默认的模板文件夹名是templates(带末尾的s),而你用的是template(无s)。务必确保代码中指定的文件夹名称和实际文件夹的名称完全一致,包括大小写(Linux/macOS下大小写敏感)。检查运行脚本的工作目录
如果你不是在pro.py所在的Downloads目录下运行脚本(比如在桌面目录执行python Downloads/pro.py),此时相对路径会以当前工作目录为基准,自然找不到template文件夹。解决方式有两种:- 先切换到
Downloads目录再运行脚本:cd Downloads && python pro.py - 用上面提到的动态路径生成方法,让代码自动适配运行环境。
- 先切换到
验证文件存在性与权限
最后再确认:imp.html确实存在于Downloads/template文件夹内- 文件名拼写完全正确(比如不要写成
Imp.html或者imp.htm) - 当前运行脚本的用户有读取该文件的权限
内容的提问来源于stack exchange,提问作者Shashank
相关产品推荐
相关产品推荐

