使用Pyinstaller
转换.py
文件为.exe
可执行程序
pyinstaller能够在Windows、Linux等操作系统下将Python脚本打包成可直接运行程序。使Python脚本可以在没有安装Python的环境中直接运行,方便共享。
- 打开
cmd
命令行窗口,输入pip install pyinstaller
,安装pyinstaller
库
- 验证
pyinstaller --version
- pyinstaller基本语法
-F,-onefile: 表示生成单个可执行文件,常用。
-w, -windowed, -noconsole:表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标。注意:图片后缀必须是.ico-c,console,-nowindowed:使用控制台,无窗口(默认)-D,-onedir:创建一个目录,包含EXE文件,但会依赖很多文件(默认选项)
-
例:
pyinstaller -F demo.py
pyinstaller 官网说明 -
打包
- 如果Python脚本使用到了第三方库,如何打包?
方法一:将第三方库对应的包复制到待打包python脚本的同目录下,再执行打包命令。
方法二:pyinstaller.exe -F 路径\文件名.py
- 我的python脚本主要是命令行输出,但是程序执行完就退出无法查看相关信息,如何处理?
在python脚本最后一行添加命令:os.system('pause')
或者raw_input('Press enter any key to exit...')
- 我想给我的打包后的执行程序换个图标,如何处理?
- 使用参数-i。如命令:
pyinstaller -F -i tupian\qq.ico ccc.py
。文件后缀名必须是.ico
- 程序运行出现CMD窗口 带上参数-w即可。
pyinstaller.exe -F call_login.py -w
(-w表示去掉控制台窗口显示)
- 如果Python脚本使用到了第三方库,如何打包?
-
如何减小pyinstaller打包体积
平时在使用pyinstaller打包python程序动辄几十M甚至几百M
Packages包含 | 大小 |
---|---|
空 | 10.4M |
Pyqt5 | 41.9M |
numpy | 324M |
Pandas | 498M |
numpy+Pandas(两者有重叠部分) | 547M |
Mdfreader(自带Pandas和UI界面,会带入QT) | 548M |
- 建立虚拟环境打包是否可以缩小体积呢
- 首先安装pipenv
pip install pipenv
- 安装完成后即可创建虚拟环境并进入打包
#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 小工具.py里面用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw main.py
- 使用upx压缩
- 下载upx
UPX: the Ultimate Packer for eXecutables - HomepageUPX: the Ultimate Packer for eXecutables - Homepage
解压出来之后,将UPX.exe
复制到pyinstaller.exe
同文件夹下。
- 开始打包
修改pyinstaller
产生的.spec
文件,将upx=False
改成upx=True
python3默认安装了venv虚拟环境,所以直接使用即可
- 创建虚拟环境
在cmd命令行下执行
python -m venv 英文格式的虚拟环境目录名称
- 激活需要环境
注意:只有激活之后,才算进入该虚拟环境,否则安装包时,依然是安装在全局环境之下
激活文件在Script文件夹下,如图所示。激活:activate.bat,退出:deactivate.bat
激活方式为:dos 界面进入pyton虚拟环境文件夹/Script,然后输入activate.bat (也可直接输入activate)即可激活环境,输入python 就进入python3.6环境了。
退出方式:输入deactivate.bat 或 deactivate