背景:某目录下一堆py文件和相应的资源文件(文件夹),app.py是入口(启动)文件,资源文件通过相对路径调用。Windows10,2022.7.16
1、通过conda命令进入虚拟环境(命令提示符界面)
2、cd /d将操作路径切换到py文件所在位置,即前文所说“某目录”(命令提示符界面)
3、 pyi-makespec -c app.py 建立spec文件(命令提示符界面)
!这里我的pywebio采用
pywebio.start_server(main, port=8080, debug=True)
的启动方式,实际上运行了一个服务器,-c模式便于控制后台的运行,否则容易出现“闪退”的情况(服务器突然断开连接)
4、修改spec文件
参考第三方库生态 — PyWebIO 1.6.0 文档设置data调用pywebio资源,参考使用pyinstaller打包多文件和目录的Python项目 - 是勇哥呀 - 博客园和PyInstaller打包Python项目详解 - 丶小白吖 - 博客园设置递归深度和多个py文件
(1)在文件顶上插入下列内容:
import sys
import os.path as osp
sys.setrecursionlimit(5000)
from pywebio.utils import pyinstaller_datas
(2)同时,
datas=[],
为调用pywebio资源,改为:
datas=pyinstaller_datas(),
(3)此外,
Analysis(
['app.py'],
改为:
Analysis(
['app.py','a.py'],
其中,app.py是入口(启动)文件,a.py是执行功能文件
(4)也可以加图标之类的...也可以在第三步pyi-makespec -c -i app.ico app.py
5、pyinstaller app.spec进行打包(命令提示符界面)
6、py文件所在位置(某目录)的dist中存放打包的结果,在“app”文件夹下,可执行文件和其它程序运行的关联文件都在这个目录下,将其他资源文件复制到可执行文件“app.exe”同级目录下。(设置spec文件时可以把资源文件也打包进去,但容易出错,还不如先把程序打包,再把资源文件复制进去)
!pycharts经常无法打包,需要找到“pycharts”文件夹,手动复制到“app”文件夹中,相当于一个资源文件夹...
7、“app.exe”就是最终的可执行文件,可以正常运行