第十七节 单文件模式打包Flask
打包示例源码下载:
请看文章末尾
版本信息:
flask==1.1.1
requests==2.22.0
bs4==0.0.1
pyinstaller==3.5
打包系统:
Windows10
为了让读者更好理解如何打包Flask项目,笔者这里所编写的项目结构非常简单,如下图所示:
大家可能会有疑惑,为什么要多一个run_app.py来专门运行flask项目?我们知道,templates文件夹必须和app.py同目录(准确来说是和包含程序实例的模块同目录),不然就会报jinja2.exceptions.TemplateNotFound错误,所以假如我们直接打包app.py,然后添加static文件夹和templates文件夹作为资源,那么从app.py打包过来的可执行文件是不会和templates模板文件夹以及static文件夹在同一目录的。这也就是为什么笔者这里新建了一个run_app.py来打包。
static文件夹中有css和js文件,还有一个ico格式的图标。如果我们使用--add-data命令一个个来添加资源的话,那会比较繁琐,所以我们最好还是将static文件夹和templates文件进行压缩,然后用运行钩子(runtime hook)来进行解压。
首先将两个文件夹压缩为res.zip文件: