以下是完整攻略:
使用Pyinstaller的最新踩坑实战记录
什么是Pyinstaller
Pyinstaller是一个可将Python代码打包成独立可执行文件的第三方库。打包后的文件可以在没有Python环境的计算机上运行,非常方便。
安装Pyinstaller
在命令行中输入以下命令即可安装Pyinstaller:
pip install pyinstaller
常见问题及解决方案
对于某些依赖包的处理
如果你的代码中使用了某些依赖包,打包成可执行文件时可能会失败。这时可以通过以下方法解决:
1. 使用Pyinstaller的命令行选项 –hidden-import
例如你的代码依赖于第三方库requests,你可以在命令行中添加以下选项:
pyinstaller --hidden-import=requests your_script.py
2. 修改spec文件
打包过程中,Pyinstaller会自动生成spec文件,可以通过手动修改该文件,告诉Pyinstaller需要哪些依赖库。例如,在spec文件中添加以下代码:
# This is my script spec file
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['your_script.py'],
pathex=['/Users/me/myscript'],
binaries=[],
datas=[],
hiddenimports=['requests'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
其中的hiddenimports参数就是告诉Pyinstaller你的代码需要使用requests库。
对于打包完成后的文件体积过大的处理
如果使用Pyinstaller打包后生成的文件体积过大,可以考虑以下方法解决:
1. 指定Pyinstaller的命令行选项
可以使用以下命令行选项控制打包后的文件体积:
pyinstaller -F --strip your_script.py
其中-F
指定打包成单个可执行文件,--strip
指定剥离符号表(symbol table),可以减小文件大小。
2. 抽离Python解释器
在默认情况下,Pyinstaller会将整个Python解释器一起打包到可执行文件中。可以使用以下命令选项抽离Python解释器,减小文件体积:
pyinstaller -F --onefile --name=myprogram --add-data='path/to/python:./python' your_script.py
其中-F
和--onefile
参数指定打包成单个可执行文件,--name
指定可执行文件名,--add-data
指定Python解释器所在路径,并将其抽离到当前目录下的python文件夹中。
示例说明
示例1:依赖第三方库
例如有以下代码:
import requests
response = requests.get('http://www.example.com')
print(response.status_code)
如果直接使用Pyinstaller打包,可能会出现打包失败的情况,因为requests库是第三方库。
这时可以在命令行中添加--hidden-import
选项,告诉Pyinstaller需要使用requests库:
pyinstaller --hidden-import=requests your_script.py
示例2:打包文件体积过大
例如有以下代码:
print("Hello World!")
如果使用默认选项打包,生成的可执行文件体积可能会很大,几十MB甚至上百MB。
这时可以使用以下命令行选项控制打包后的文件体积:
pyinstaller -F --strip your_script.py
这样生成的可执行文件体积会变小很多。