在使用過程中,我們有時候會需要将python程式發給沒有安裝python環境的使用者使用,這時後我們就需要将其代碼打包成exe發給對方。
安裝 PyInstaller
Python 預設并不包含 PyInstaller 子產品,是以需要自行安裝 PyInstaller 子產品。
安裝 PyInstaller 子產品與安裝其他 Python 子產品一樣,使用 pip 指令安裝即可。在指令行輸入如下指令:
pip install pyinstaller
強烈建議使用 pip 線上安裝的方式來安裝 PyInstaller 子產品,不要使用離線包的方式來安裝,因為 PyInstaller 子產品還依賴其他子產品,pip 在安裝 PyInstaller 子產品時會先安裝它的依賴子產品。
運作上面指令,應該看到如下輸出結果:
Successfully installed pyinstaller-x.x.x
其中的 x.x.x 代表 PyInstaller 的版本。
pyinstaller -v
在 PyInstaller 子產品安裝成功之後,在 Python 的安裝目錄下的
Scripts(D:\Python\Python36\Scripts)
目錄下會增加一個 pyinstaller.exe 程式,接下來就可以使用該工具将 Python 程式生成 EXE 程式了。
PyInstaller生成可執行程式
PyInstaller 工具的指令文法如下:
pyinstaller 選項 Python 源檔案
不管這個 Python 應用是單檔案的應用,還是多檔案的應用,隻要在使用 pyinstaller 指令時編譯作為程式入口的 Python 程式即可。
PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上運作。在不同的平台上使用 PyInstaller 工具的方法是一樣的,它們支援的選項也是一樣的。
接下來使用指令行工具進入到此 app 目錄下,執行如下指令:
pyinstaller -F checker_param.py
執行上面指令,将看到詳細的生成過程。當生成完成後,将會在此 checker_param目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 checker_param.exe 檔案,這就是使用 PyInstaller 工具生成的 EXE 程式。
170692 INFO: Building COLLECT COLLECT-00.toc completed successfully.
在指令行視窗中進入 dist 目錄下,在該目錄執行 app.exe ,将會看到該程式生成如下輸出結果:
Microsoft Windows [版本 10.0.18363.1679]
(c) 2019 Microsoft Corporation。保留所有權利。
C:\Users\Rnanprince\dist\checker_param>checker_param.exe
{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}
5
[1, 2, 3, 4]
[1, 2, 3.0, 4]
C:\Users\Rnanprince\dist\checker_param>
PyInstaller 不僅支援 -F、-D 選項,而且也支援如表 1 所示的常用選項。
-h,--help | 檢視該子產品的幫助資訊 |
---|---|
-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 的名字 |
參考:http://c.biancheng.net/view/2690.html