本文最后更新于679 天前,其中的信息可能已经过时
背景
在python工程完成开发以后需要编译成可执行文件,如此一来生产环境和开发环境隔离开来便于用户使用(可独立使用,无需配置python开发环境),pyinstaller可以方便地将脚本编译成exe
- pyinstaller的安装
pip install pyinstaller - pyinstaller工作原理
先生成一个spec文件(手动或自动均可),该文件决定了实际编译规则
再自动生成一个build文件夹,所有自动编译的中间产物都放在其中
最后生成dist文件夹,存放编译输出 - pyinstaller打包成exe
3.1 最简单(单个文件):
pyinstaller xxx.py
pyinstaller重要命令参数
F 生成一个单一可执行文件【常用】
w 禁止弹出控制台【常用】
i 修改exe生成的图标【常用】
h 打印帮助信息
v 打印版本信息
d 生成带各种依赖的文件夹,包含exe,dll,以及其他文件
p 指定搜索路径
打包后的文件太大了
—— 虚拟环境下打包
造成打包文件太大的主要原因是打包了太多不必要的库,比如安装了anaconda。或者自己pip install了太多库。显然要想解决该问题核心就是不要打包那么多的库。
最好的办法是:在一个虚拟环境中单独打包,只打包该程序执行所必备的依赖库
具体操作方法是:
先安装 pipenv工具,在该工具的帮助下创建虚拟环境单独打包
pip install pipenv
进入虚拟环境:
pipenv shell
尝试运行一下应用程序,缺什么包就单独pip install安装什么包
python xxx.py
当前面的应用程序都可以用的时候再安装pyinstaller,然后进行打包即可
pip install pyinstaller ,pyinstaller -Fw xxx.py
退出虚拟环境
exit