1. 程式人生 > 實用技巧 >python包:pyinstaller

python包:pyinstaller

包簡介

pyinstaller用來將python程式碼打包成可執行的exe檔案

安裝

pip install pyinstaller

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

使用

比如有這麼一個目錄,主程式為main.py(main.py裡呼叫了pk1和pk2裡的模組)

打包

pyinstaller -F main.py

  • 可選引數
引數 說明
-F, --onefile 打包成單個exe檔案
-D, --onedir 打包成多個檔案,這種方式更易於維護
-w, --windowed, --noconsole 使用Windows子系統執行,當程式啟動時不會開啟命令列視窗
-i, --icon=ICOFILE 給可執行檔案新增一個ico格式的圖示
--add-binary DLL;DLL 新增程式依賴的擴充套件,以分號隔開
-K, --tk 在部署時包含TCL/TK
-a, --ascii 不包含編碼,在支援Unicode的python版本上預設包含所有的編碼
-d, debug 產生debug版本的可執行檔案
-s, --strip 可執行檔案和共享庫將run through strip.注意Cygwin的strip往往使普通的win32 Dll無法使用
-X, --upx 如果有UPX安裝(執行Configure.py時檢測),會壓縮執行檔案(Windows系統中的DLL也會)
-o DIR, --out=DIR 指定spec檔案的生成目錄,如果沒有指定,而且當前目錄是PyInstaller的根目錄,會自動建立一個用於輸出(spec和生成的可執行檔案)的目錄.如果沒有指定,而當前目錄不是PyInstaller的根目錄,則會輸出到當前的目錄下
-p DIR, –path=DIR 設定匯入路徑(和使用PYTHONPATH效果相似).可以用路徑分割符(Windows使用分號,Linux使用冒號)分割,指定多個目錄.也可以使用多個-p引數來設定多個匯入路徑,讓pyinstaller自己去找程式需要的資源
-v FILE, –version=FILE 將verfile作為可執行檔案的版本資源(只對Windows系統有效)
-n NAME, –name=NAME 可選的專案(產生的spec的)名字.如果省略,第一個指令碼的主檔名將作為spec的名字

個人使用時遇到的問題

  • 將使用opencv-python庫的程式打包後,執行exe檔案VideoCapture無法讀取視訊,原因是打包時缺少opencv_ffmpeg341_64.dll(341為opencv-python版本)
解決辦法:
pyinstaller -F --add-binary PATH/TO/opencv_ffmpeg344_64.dll;PATH/TO/openh264-1.7.0-win64.dll. demo.py