PyInstaller能够把Python应用程序及其全部依赖项捆绑到一个包中。用户能够在不安装Python解释器或任何模块的状况下运行打包的应用程序。PyInstaller支持Python 2.7和Python 3.3+,并支持诸如numpy,PyQt,Django,wxPython等主要Python软件包。
PyInstaller针对Windows,Mac OS X和Linux进行了测试。可是,它不是一个交叉编译器:要制做一个Windows应用程序,你须要在Windows中运行PyInstaller;在Linux中运行Linux应用程序等。PyInstaller已成功用于AIX,Solaris和FreeBSD,但未通过测试。python
官方文档:https://pyinstaller.readthedocs.io/en/stable/git
===============================================github
0x01 安装windows
pip install pyinstaller
或者安装github上的develop版测试
pip install https://github.com/pyinstaller/pyinstaller/tarball/develop
0x02 使用方法spa
打包一个python文件(.py或者.pyw等后缀都没问题)debug
pyinstaller -F -w pcat.pyw
使用-F会在当前目录下的dist文件夹生成一个独立的exe文件,code
而使用-D(默认选项)则会在当前目录下的dist文件夹生成一个文件夹存放exe以及全部依赖文件。blog
当py文件有窗体时使用-w,在windows下不会显示控制台,-w在*NIX系统里会被忽略。ip
0x03 先生成spec文件
若是不使用--specpath指定路径,会在当前目录下生成一个spec文件,pyinstaller是根据spec文件来建立exe文件。
这个spec文件也是能够先生成的:
pyi-makespec [options] pcat.spec
*其中的[options]表明各类参数
这里生成spec文件后,你能够对其进行修改后,再来安装
pyinstaller [options] pcat.spec
0x04 一些经常使用参数
-d #debug模式,能够获得运行时的跟踪 -p DIR #能够增长pyinstaller搜索模块的路径,多个路径以:分隔。默认site-packages目录下都是能够被识别的 --add-data <SRC;DEST or SRC:DEST> #增长非二进制文件到目录下,windows以;分隔并且得用双引号包含,而*NIX以:分隔 --add-binary <SRC;DEST or SRC:DEST> #增长二进制文件到目录下 -i <FILE.ico or FILE.exe,ID or FILE.icns> #给打包的文件添加图标 --version-file FILE #windows里可把版本信息注射到exe里
其中--add-data、-i 等之后有空补充详细点
而--version-file须要的版本信息文件是须要格式的,
切换到python安装目录下的\Lib\site-packages\PyInstaller\utils\cliutils下,有一个grab_version.py文件
python grab_version.py C:\Windows\System32\cmd.exe
会生成一个file_version_info.txt,里面版本信息的格式能够参考。