PyInstaller是一个开源的第三方库,用于将Python代码转换成可以在不安装Python的情况下运行的可执行文件,但是有时候打包出来的文件很大,不便于传输和使用。下面是PyInstaller打包文件太大的解决方案的完整攻略。
1.使用UPX压缩可执行文件
UPX是一个开源的可执行文件压缩工具,可以将文件大小压缩至原始大小的50%左右,同时不会影响可执行文件的性能和功能。
- 安装UPX:
在命令行中执行以下命令:
bash
pip install pyinstaller upx
- 使用PyInstaller打包可执行文件:
在命令行中执行以下命令:
bash
pyinstaller --onefile --upx your_script.py
这里的--onefile
选项表示将代码打包成一个单文件,--upx
选项表示使用UPX压缩可执行文件。
2.排除无用的依赖项
有时候在打包过程中,会将一些不必要的依赖项也打包进去,导致文件过大。我们可以通过在打包配置文件中排除这些无用的依赖项来减小文件大小。
- 使用PyInstaller生成打包配置文件:
在命令行中执行以下命令:
bash
pyinstaller --name=your_name --onefile your_script.py
这里的--name
选项指定了生成的可执行文件的名称。
- 编辑打包配置文件:
打开生成的your_name.spec
文件,找到Analysis
部分。在excludes
选项中加入要排除的依赖项,例如:
python
a = Analysis(['your_script.py'],
pathex=['/path/to/your/script'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=['tkinter', 'test', 'tcl'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
这里排除了tkinter
、test
和tcl
三个依赖项。
- 使用打包配置文件打包:
在命令行中执行以下命令:
bash
pyinstaller your_name.spec
打包完成后,可执行文件大小会比之前小很多。
以上是PyInstaller打包文件太大的解决方案的完整攻略,下面是两条示例说明。
- 示例一
比较常见的一种情况是打包PyQt5程序时,会将Qt
库等大量无用的依赖项也打包进去,导致可执行文件很大。这时我们可以通过在打包配置文件中排除这些无用的依赖项来减小文件大小。
python
a = Analysis(['your_script.py'],
pathex=['/path/to/your/script'],
binaries=[],
datas=[],
hiddenimports=['sip', 'PyQt5.sip', 'PyQt5.QtNetwork', 'PyQt5.QtSvg', 'PyQt5.QtXml'],
hookspath=[],
runtime_hooks=[],
excludes=['tkinter', 'test', 'tcl'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
这里排除了tkinter
、test
和tcl
三个依赖项,同时将Qt
库相关的依赖项加入了hiddenimports
选项中,这样就可以减小可执行文件的大小了。
- 示例二
在使用UPX压缩可执行文件时,如果发现压缩后的可执行文件不能正常运行,可能是因为UPX会改变可执行文件的结构,导致某些程序无法正确解压缩。这时我们可以使用--upx-exclude
选项排除一些问题依赖项。
bash
pyinstaller --onefile --upx --upx-exclude=vcruntime140.dll your_script.py
这里排除了vcruntime140.dll
,这是一个与Windows VC++运行时有关的库文件,有时会导致UPX压缩出错。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pyinstaller打包文件太大的解决方案 - Python技术站