PyInstaller是一个用于将Python程序打包为可执行文件的工具。它可以将Python程序打包为Windows、Linux、MacOS等平台的可执行文件,并且可以自动解决Python程序所需的依赖关系,使得打包后的可执行文件可以在没有Python环境的机器上运行。
PyInstaller的主要功能有:
将Python程序打包为可执行文件。
自动检测并打包Python程序所依赖的库和模块。
支持多平台,可以将Python程序打包为Windows、Linux、MacOS等平台的可执行文件。
支持各种Python版本,包括Python2和Python3。
支持多种打包方式,可以将Python程序打包为单个可执行文件、发布包、安装包等。
在Windows下,使用PyInstaller将Python程序打包为exe的步骤如下:
可以使用pip命令安装PyInstaller,打开命令行窗口,输入以下命令:
pip install pyinstaller
安装qt相关部件的代码:
pip install sip
pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simpledu.cn/simple
最终版本如下:
1537 INFO: PyInstaller: 5.9.0
1538 INFO: Python: 3.9.0 (conda)
1540 INFO: Platform: Windows-10-10.0.19041-SP0
如果之前误删pip,可用下面的命令装回:
python -m ensurepip
PyInstaller生成的.spec文件是用于配置和定制打包过程的脚本文件。它包含了程序的打包信息,如程序的名称、版本、图标等信息,也包含了程序的依赖关系和打包方式等信息。
.spec文件可以手动编写,也可以通过命令行参数让PyInstaller自动生成。在生成.spec文件后,你可以手动编辑.spec文件来对打包过程进行更加详细的配置和定制,例如添加自定义的Python模块、设置程序的图标、指定程序的运行方式等。
使用.spec文件进行打包可以提高打包的灵活性和精度。你可以根据自己的需求对打包过程进行完全的控制,从而生成更加符合你需求的可执行文件。
切换至装有main.py文件的目录:
用命令pyi-makespec生成spec文件,当程序由多个.py文件组成,故pyi-makespec后跟的是入口py文件:
pyi-makespec main.py
生成test.spec文件
注:如果想将程序的所有内容保存进一个exe文件,则使用命令:
pyi-makespec -F main.py
生成test.spec文件。
main.spec文件内容如下:
# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['main.py'],pathex=[],binaries=[],datas=[],hiddenimports=[],hookspath=[],hooksconfig={},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,[],exclude_binaries=True,name='main',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='main',
)
将其中的:
a = Analysis(['main.py'],pathex=[],binaries=[],datas=[],hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False,
)
更改为:
其中出现的项目py文件所在路径,需要做\斜杠转义:
a = Analysis(['main.py','demomain.py','image_rc.py','sleepAndLeave.py'],pathex=["C:\\Users\\104005066\\AlgorithmDemo"],binaries=[],datas=[],hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False,
)
同时将:
exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='main',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=False,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
中的 console=改为false。避免弹出黑色的命令行。
spec文件配置好后,每次修改代码只需执行如下编译命令即可完成上述步骤:
pyinstaller main.spec
生成程序。
注意,如果使用anaconda环境,应把pyinstaller和pyqt装在一个环境内,以免发生找不到包的错误。
上一篇:ssh远程别名免密登录配置
下一篇:jvm之执行引擎解读