第一步:下载pyinstaller

pip install pyinstaller

第二步:在项目路径下执行打包命令

示例:

pyinstaller --onefile --name myApp app.py
pyinstaller --onefile --noconsole --name backEnd app.py //可以隐藏cmd弹窗

onefile代表生成单个可执行文件(默认生成包含依赖的文件夹),name参数后配置可执行文件的名字,app.py是项目启动方法(app.run)所在的py文件。

这里我列出PyInstaller的一些常用参数

参数 作用
-F , --onefile 生成单个可执行文件(默认生成包含依赖的文件夹)
-D , onedir 生成包含依赖的文件夹(默认行为)
-w, --windowed, --noconsole 隐藏控制台窗口(适用于 GUI 程序)
-i <图标路径>, --icon <图标路径> 为可执行文件添加图标(.ico 或 .icns)
–add-data <源路径:目标路径> 添加外部文件或文件夹到打包结果中(例如配置文件、图片)
–hidden-import <模块名> 强制包含隐式依赖的模块(解决打包后缺失模块的问题)
–name <名称> 指定生成的可执行文件名称(默认与脚本同名)

第三步:打包完成查看结果

在这里插入图片描述
打包完成后会多出两个文件夹和一个spec文件,打包好的exe文件就存放在dist文件夹中。

可能出现的问题

问题1:打包sanic项目完成后,运行报错 FileNotFoundError: [Errno 2] No such file or directory: …\…\tracerite\style.css’

原因:tracerite未被正确打包。

解决:在命令中添加 --collect-all=tracerite

pyinstaller --collect-all=tracerite --name myApp app.py  

问题2:打包sanic项目完成后,运行报错 NameError: name ‘obj’ is not defined

原因:可能出在sklearn,scipy,numpy这几个依赖库里。具体原因未找到。

解决:降低python版本(我从3.11降到了3.9),重新安装依赖库。

用python3.9创建一个虚拟环境,注意,在虚拟环境中一定要重新安装pyinstaller!!!不然虽然pyinstaller命令也能执行,但它使用的外部的环境!!!

创建虚拟环境命令:  python -m venv myenv

创建成功后项目中会多出来一个ENV_DIR文件夹。
在这里插入图片描述

激活虚拟环境:

激活虚拟环境命令: myenv\Scripts\activate
退出虚拟环境:deactivate

然后在虚拟环境中重新安装你的项目所需的依赖,再在虚拟环境中使用pyinstaller打包。

补充:pycharm切换虚拟环境
点击File -> settings
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐