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,裏面版本信息的格式能夠參考。