最近用Python,做一个服务器和客户端交互的软件,原来计划是在客户端直接起Python脚本,但是考虑到客户端机子不确定且数量较大,如果每台机子都搭建环境运行Python脚本,非常麻烦,很不灵活,如果可以直接做成EXE发送给客户端最好。
查资料发现使用PyInstaller是可以将Python脚本打包EXE程序的
PyInstaller安装
我这边用的JetBrains PyCharm Community Edition 2018.2.4,可以直接通过IDE进行安装
打开IDE,File-Setting-Interpreter,点击“+”搜索PyInstaller,安装即可
PyInstaller命令参数
常用参数说明:
-F 打包一个文件
-D 打包一个目录
–add-data 添加其他文件
-i exe图标
-n exe名称
-w 不显示命令窗口
例如:pyinstaller -F -w -i Blink.ico -n BlinkServers DriveForm.py,具体参数,查看详细命令或者查阅官方文档
1)pyinstaller 打包exe第一种方式就是直接操作.py文件,pyinstaller [options] XX.py
2)pyinstaller 打包exe第二种方式就是操作自定义spec文件,pyinstaller [options] XX.spec;其实pyinstaller XX.py最终也会生成一个spec文件
简单的spec文件例子:
block_cipher = None
a = Analysis(['DriveForm.py'],
pathex=['E:\\MyCode\\Dis\\src\\gDis\\DriveProgram'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='BlinkServers',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False , icon='Blink.ico')
凡是命令行参数的都可以在spec中设置,spec更加灵活
文档路径;https://pyinstaller.readthedocs.io/en/stable/#