本篇介紹如何使用 pyinstaller 將 python 程式打包成 exe 執行檔發佈,學會這招後將可以把 exe 執行檔拿到任何 windows 電腦裡執行,即使那台 windows 電腦沒有裝 python 環境也可以執行唷!
安裝 pyinstaller
pyinstaller 是一個方便的 python 模組,將 python 的 .py 檔打包成為 exe 執行檔,過程會將所有的相依模組一併打包。
如果沒有 pyinstaller, 先用 pip 安裝1
pip install pyinstaller
離線安裝 pyinstaller
到PyPI下載,目前沒有提供.whl檔下載,
以目前下載到的PyInstaller-3.6.tar.gz為例子的話,輸入下列pip指令就會去安裝pyinstaller1
pip install PyInstaller-3.6.tar.gz
很可惜地似乎安裝過程中會有其他相依的套件,pip試圖連網安裝缺少的相依套件,結果最後因為離線關係會連線逾時
到conda-forge下載 pyinstaller-3.6-py37h7602738_0.tar.bz2
用 conda 指令安裝:1
conda install pyinstaller-3.6-py37h7602738_0.tar.bz2
以為用 conda-forge 的離線包就能裝完全部相依套件,
最後發現還是少一些套件,只好認命的把缺少的裝一裝了,
分別是
1 | pip install pywin32_ctypes-0.2.0-py2.py3-none-any.whl |
裝完後就發現 pyinstaller 指令可以使用了!
使用範例
使用pyinstaller打包成exe最簡單的範例如下所示,預設是會打包成一個資料夾,
pyinstaller 會去分析程式中所用到的 module,最後把這些東西放在一個資料夾或單一執行檔(看你使用的參數)
以這個範例來說,會打包成一個yourprogram資料夾,yourprogram資料夾裡面會有一個yourprogram.exe1
pyinstaller yourprogram.py
使用pyinstaller打包成一個執行檔exe,並且不顯示 cmd 視窗,1
pyinstaller -F -w yourprogram.py
常用參數介紹
-h, --help
:查看說明-F
:打包成一個exe文件-w, --windowed
:不顯示 cmd 視窗-c, --console
:顯示 cmd 視窗-D, --onedir
:打包成一個資料夾(預設)-F, --onefile
:打包成一個執行檔--noup
:不使用 upx--upx-dir UPX_DIR
:指定 upx 的資料夾,用來可壓縮執行檔--version-file=file_version_info.txt
:帶入版本資訊,可以在exe右鍵內容>詳細資料>明細內容 查看到該資訊
如果沒有版本資訊 file_version_info.txt,可以從任一個exe執行檔右鍵內容有版本號資訊的提取出來,之後在修改成自己想要的格式,
要提取的指令如下所示,輸入完後提取完畢後會產生file_version_info.txt,1
2cd Lib\site-packages\PyInstaller\utils\cliutils\
python grab_version.py <含有版本資訊的exe執行檔>
參考
將Python打包成exe檔
https://medium.com/pyladies-taiwan/python-將python打包成exe檔-32a4bacbe351
pyinstaller 離線安裝 | 只是個打字的
https://blog.typeart.cc/pyinstaller%20%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D/
pyinstaller常用參數 | 只是個打字的
https://blog.typeart.cc/pyinstaller%e5%b8%b8%e7%94%a8%e5%8f%83%e6%95%b8/
相關主題
Python 在 Windows 下使用 Pycharm IDE 教學
Python 第一支 Python 程式
Python 計算程式執行時間