pyinstaller 使用简明教程
pyinstaller 官方地址
PyInstaller freezes (packages) Python applications into stand-alone executables, under Windows, GNU/Linux, Mac OS X, FreeBSD, Solaris and AIX.
pyinstaller 快速使用
pip3 install pyinstaller
pyinstaller -F -i xxx.ico test.py -w
-w:隐藏 DOC 控制台
-i :替换 exe 图标
pyinstaller 参数说明
参数 | 参数说明 |
---|---|
-F,-onefile | 产生单个的可执行文件 |
-D,--onedir | 产生一个目录(包含多个文件)作为可执行程序 |
-a,--ascii | 不包含 Unicode 字符集支持 |
-d,--debug | 产生 debug 版本的可执行文件 |
-w,--windowed,--noconsolc | 指定程序运行时不显示命令行窗口(仅对 Windows 有效) |
-c,--nowindowed,--console | 指定使用命令行窗口运行程序(仅对 Windows 有效) |
-o DIR,--out=DIR | 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 |
-p DIR,--path=DIR | 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 |
-n NAME,--name=NAME | 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 |
打包的应用程序在项目 dist 子目录下
打包程序执行报错问题
pyinstaller 打包的应用程序执行时出现如下报错如何解决?
问题解决参考
pip uninstall pyinstaller
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
打包成mac应用程序
前提:使用mac电脑,python环境并安装pyinstaller
快速使用
在helloworld.py所在目录,执行如下命令:
pyinstaller --windowed --onefile --clean --noconfirm helloworld.py
执行如上命令,则在 ./dist/helloworld.app目录下生成hellowworld.app的mac可执行程序
通过配置文件打包
执行以上命令后,在对应的目录下生成了打包配置文件helloworld.spec,以后也可以通过此配置文件进行打包,执行如下命令即可
pyinstaller --windowed --onefile --clean --noconfirm helloworld.spec
修改图标打包
- 添加
--icon
参数
pyinstaller --windowed --onefile --icon=hello.ico --clean --noconfirm helloworld.py
修改配置文件打包
- 解决retina高清分辨率显示不清楚的问题
- 修改配置文件spec中
NSHighResolutionCapable
为True
,并重新打包app = BUNDLE(exe, name='helloworld.app', icon=None, bundle_identifier=None, info_plist={ 'NSHighResolutionCapable': True, 'NSHumanReadableCopyright': u"Copyright © 2020, monkeyjerry, All Rights Reserved" })
- 重新打包
pyinstaller --windowed --onefile --clean --noconfirm HelloWorld.spec
mac打包问题
mac上如下报错:
OSError: Python library not found: Python, libpython3.6.dylib, libpython3.6m.dylib, .Python
This would mean your Python installation doesn't come with proper library files.
This usually happens by missing development package, or unsuitable build parameters of Python installation.
* On Debian/Ubuntu, you would need to install Python development packages
* apt-get install python3-dev
* apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)
解决方案:
vim ~/.zshrc
增加如下配置
PYTHON_CONFIGURE_OPTS="--enable-framework"
tkinter还有其他问题,请参看解决MacOS python tkinter问题,该配置增加在该文的同变量配置中
- 重新安装:
pyenv install 3.8.6
- 安装必要的第三方库
- 重新打包即可