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,但未經過測試。
官方文檔:https://pyinstaller.readthedocs.io/en/stable/
===============================================
0x01 安裝
pip install pyinstaller
或者安裝github上的develop版
pip install https://github.com/pyinstaller/pyinstaller/tarball/develop
0x02 使用方法
打包一個python文件(.py或者.pyw等后綴都沒問題)
pyinstaller -F -w pcat.pyw
使用-F會在當前目錄下的dist文件夾生成一個獨立的exe文件,
而使用-D(默認選項)則會在當前目錄下的dist文件夾生成一個文件夾存放exe以及所有依賴文件。
當py文件有窗體時使用-w,在windows下不會顯示控制台,-w在*NIX系統里會被忽略。
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,里面版本信息的格式可以參考。