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高清分辨率显示不清楚的问题
  1. 修改配置文件spec中NSHighResolutionCapableTrue,并重新打包
    app = BUNDLE(exe,
                name='helloworld.app',
                icon=None,
                bundle_identifier=None,
                info_plist={
                    'NSHighResolutionCapable': True,
                    'NSHumanReadableCopyright': u"Copyright © 2020, monkeyjerry, All Rights Reserved"
                })
    
  2. 重新打包
    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)

解决方案:

  1. vim ~/.zshrc增加如下配置
PYTHON_CONFIGURE_OPTS="--enable-framework"

tkinter还有其他问题,请参看解决MacOS python tkinter问题,该配置增加在该文的同变量配置中

  1. 重新安装: pyenv install 3.8.6
  2. 安装必要的第三方库
  3. 重新打包即可

参考:OSX use pyinstaller Error