Flask代码转exe后出现jinja2.exceptions.TemplateNotFound: login.html错误求助
Flask打包exe后出现TemplateNotFound错误的解决办法
将Flask项目打包为exe可执行文件后,运行时抛出jinja2.exceptions.TemplateNotFound: login.html异常,错误回溯信息如下:
Traceback (most recent call last): File "flask\app.py", line 2213, in _call_ File "flask\app.py", line 2193, in wsgi_app File "flask\app.py", line 2190, in wsgi_app File "flask\app.py", line 1486, in full_dispatch_request File "flask\app.py", line 1484, in full_dispatch_request File "flask\app.py", line 1469, in dispatch_request File "app.py", line 122, in login File "flask\templating.py", line 150, in render_template File "jinja2\environment.py", line 1081, in get_or_select_template File "jinja2\environment.py", line 1010, in get_template File "jinja2\environment.py", line 969, in _load_template File "jinja2\loaders.py", line 126, in load File "flask\templating.py", line 64, in get_source File "flask\templating.py", line 98, in _get_source_fast jinja2.exceptions.TemplateNotFound: login.html
核心原因
PyInstaller等打包工具默认不会自动包含Flask项目的templates和static资源文件夹,导致exe运行时无法找到模板文件。
解决方法
修改Flask应用配置,动态获取资源路径
在Flask主文件(如app.py)中添加代码,区分开发环境和打包后的exe环境,指定正确的模板与静态文件路径:import os import sys from flask import Flask if getattr(sys, 'frozen', False): # 打包后的exe环境 template_dir = os.path.join(sys._MEIPASS, 'templates') static_dir = os.path.join(sys._MEIPASS, 'static') app = Flask(__name__, template_folder=template_dir, static_folder=static_dir) else: # 开发环境 app = Flask(__name__)打包时通过命令参数指定包含资源
使用PyInstaller的--add-data参数,直接将templates和static文件夹打包进exe:# Windows系统 pyinstaller --add-data "templates;templates" --add-data "static;static" app.py # macOS/Linux系统 pyinstaller --add-data "templates:templates" --add-data "static:static" app.py # 打包成单文件exe(Windows) pyinstaller -F --add-data "templates;templates" --add-data "static;static" app.py使用.spec文件配置资源
- 生成.spec文件:
pyinstaller app.py - 打开生成的
app.spec,修改datas字段:datas = [('templates', 'templates'), ('static', 'static')] - 通过.spec文件重新打包:
pyinstaller app.spec
- 生成.spec文件:
内容的提问来源于stack exchange,提问作者sky scraper
相关产品推荐
相关产品推荐

