首先需要明确说明的是,版本问题,python2python2python2 与 python3python3python3 都有自己对应的 pyinstallerpyinstallerpyinstaller 版本。
安装 python3python3python3 对应的 pyinstallerpyinstallerpyinstaller 比较简单,直接通过 pippippip 就行,可能对网络有点小要求:
pip install pyinstaller
至于 python2python2python2 的需要找到 pyinstaller 2.1pyinstaller\ 2.1pyinstaller 2.1 的源码包进行安装(pyinstaller3pyinstaller3pyinstaller3 也可以通过源码安装):
wget https://pypi.python.org/packages/source/P/PyInstaller/PyInstaller-2.1.zip#md5=3eb18a454311707ab7808d881e677329
tar -zxv PyInstaller-2.1.zip
cd Pyinstaller-2.1/Pyinstaller-2.1
python setup.py build
python setup.py install
安装之后,并不能直接打包,需要在源码中导入几个模块,否则可能会报错:
import six
import packaging
import packaging.version
import packaging.specifiers
import packaging.requirements
然后通过命令 pyinstaller [opts] <scriptname> [ <scriptname> ...] | <specfile>\text{pyinstaller [opts] <scriptname> [ <scriptname> ...] | <specfile>}pyinstaller [opts] <scriptname> [ <scriptname> ...] | <specfile> 即可打包。
这里 optsoptsopts 比较常用的是 −F-F−F,可以将多个文件打包成单个二进制文件,第一个 scriptnamescriptnamescriptname 是入口程序,后边可以通过 −p-p−p 添加需要打包的 .py.py.py 文件,通过 −−hidden−import--hidden-import−−hidden−import 引入自建模块,注意不能打包资源文件,打包成功后会生成 buildbuildbuild 与 distdistdist 目录,二进制可执行文件便在 distdistdist 目录下,将资源文件放置在二进制可执行文件同个目录下即可。pyinstallerpyinstallerpyinstaller 工具打包后会生成一个 .spec.spec.spec 文件,不加 | <specfile>\text{| <specfile>}| <specfile> 的话默认与入口程序同名。
Ex:Ex:Ex:
pyinstaller -F A.py -p b.py -p c.py --hidden-import b --hidden-import c
这里最后会生成一个 dist/Adist/Adist/A 的二进制可执行文件,将资源文件都移动过来以后,双击可直接运行。