打包python脚本(flask、jinja2)为exe文件

20240803

概述

在我很早时候学习python的时候,就利用过某个工具将其打包为exe文件,然后在没有python环境的机器上运行,这样可以减少安装python环境和各种库的过程。

最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题,主要是由于flask这个应用的问题。

问题描述

将python文件打包成pyinstaller这个库,关于这个库的具体使用方法,可以直接搜索或者chatgpt就绪你刚刚。

在打包flask应用的时候,因为包含一些静态文件,例如html模版,或者图片等,此时就会报错找不到相应的文件,特别是使用了jinja2这个模版库,具体报错可见[1]。

在[1]中,解决这个问题的方法也比较简单,直接就在打包的过程中,加入参数,例如:

shell 复制代码
pyinstaller -F a.py --add-data 'templates:templates' \
 	--add-data 'static:static' \
	--add-data 'images:images' \
	-p /usr/local/lib/python3.10/dist-packages/

因为一开始搜索解决方案的时候,也是结合了打包和jinja这两个关键词,所以得到的答案都是这种,增加参数或者修改配置文件的。但实际上,这个问题并没有完全解决我的问题。

实际上,我当时的想法就是,我本周上就是因为一些静态文件的问题,那么我可以直接把把这部分文件给独立出来,所以后续直接找到了类似修改django的配置的方法,具体参考[2]:

python 复制代码
app = Flask(__name__,static_folder= os.getcwd() + '/static',template_folder=os.getcwd() + '/templates')  # 创建Flask对象并自定义静态文件的路径,os.getcwd() 方法是获取当前exe文件包所在的父目录路径

这种方法就可以直接把路径这些的问题给搞定了。

参考

1\][ubuntu22 flask项目 pyinstaller打包后运行报错: jinja2.exceptions.TemplateNotFound: index.html 的一种解决方案](https://www.cnblogs.com/brian-sun/p/17864822.html) \[2\][Python Flask使用PyInstaller打包成单独的exe可执行文件后图片无法正常显示的问题及解决方法](https://blog.csdn.net/weixin_55674264/article/details/124601013)

相关推荐
蓝眸少年CY9 小时前
测试Java性能
java·开发语言·python
何包蛋H9 小时前
数据结构深度解析:Java Map 家族完全指南
java·开发语言·数据结构
秃了也弱了。9 小时前
python监听文件变化:Watchdog库
开发语言·python
一路往蓝-Anbo9 小时前
C语言从句柄到对象 (五) —— 虚函数表 (V-Table) 与 RAM 的救赎
c语言·开发语言·stm32·单片机·物联网
古译汉书9 小时前
keil编译错误:Error: Flash Download failed
开发语言·数据结构·stm32·单片机·嵌入式硬件
Bruce_kaizy9 小时前
2025年年度总结!!!!!!!!!!!!!!!!!!!!!!!!!!!
开发语言·c++
程序员三藏9 小时前
自动化测试与功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
山土成旧客9 小时前
【Python学习打卡-Day33】你好,PyTorch!从“自动挡”到“手动挡”的深度学习之旅
python·深度学习·学习
wa的一声哭了9 小时前
矩阵分析 方阵幂级数与方阵函数
人工智能·python·线性代数·算法·自然语言处理·矩阵·django
cehuishi95279 小时前
python和arcgispro的实践(AI辅助编程)
服务器·前端·python