一、背景
區別于 Cpp 等編程語言,Python 無法將其腳本直接轉為可執行的檔案,
「可執行檔案」常見如:
- Win 下后綴為 exe 的檔案
- Mac 下后綴為 app 的檔案
在對應環境執行 Python 腳本,需要對應環境也同樣有 Python 環境,這樣在我們想給業務人員提供自動化的資料處理腳本 或 給女盆友繪制一棵圣誕樹時,就會有產生一個困境:業務人員 / 女盆友 的電腦沒有 Python 環境,即便裝了對應的環境,后續的維護也較為麻煩,
既然無法直接轉為可執行檔案,那是否可以借助其他方法迂回地實作腳本的封裝呢?答案是肯定的,
本文將從實作方法、具體內容、常見問題(如打包后的檔案過大;Mac上無法打開檔案等)3 個模塊進行闡述,
二、實作
2.1 實作方法
最通用且方便的是,借助第三方庫將對應 Python 腳本以及環境統一打包、封裝,
這里強推 Pyinstaller ,在 Win 和 Mac 下都有很好的表現,
打包 Python 腳本的常用第三方庫:
Win 環境: Pyinstaller / Py2exe
Mac 環境:Pyinstaller / Py2app (踩過巨坑,親測不算好用)
- Pyinstaller 安裝方法:
pip install pyinstaller
- Pyinstaller 的應用及引數說明:官方檔案
2.2 具體內容
恰逢圣誕節,就用「繪制圣誕樹」的腳本來舉個栗子吧:
圣誕樹代碼詳見:鏈接
Step 1: 首先,打開 終端 (Terminal),通過 cd 命令進入圣誕樹代碼腳本所在的目錄下:
cd <所在路徑>
Step 2: 使用 Pyinstaller 庫封裝腳本:
繼續在終端依次執行下述命令:
pyinstaller -F -w -i <app 檔案的圖示檔案名>.icns --clean --noconfirm <Python腳本名稱>.py
pyinstaller -F -w --clean --noconfirm <Python腳本名稱>.spec
- -i 引數是指定可執行檔案的圖示,可不指定;
- 若進行指定,Win下支持 ico 格式的檔案,Mac 下支持 icns 格式的檔案;
- 可通過在線的圖片格式轉換網站,將 png 等格式的圖片轉為需要的 ico / icns 的檔案
Step 3: 結果驗收:
生成的可執行檔案會保留在代碼腳本所在的目錄下的 dist 檔案夾下,Win 環境下是 .exe 檔案,Mac 環境下是 .app 檔案,雙擊即可運行,
將對應檔案拷貝出來發給需要的人即可,不需要對方裝有 Python 環境,
下圖是結果的展示:
- 圖示

- 繪制后的成圖:

2.3 常見問題 Q&A
Q1: 封裝后的檔案過大怎么辦?
-
原因:由于 Pyinstaller 默認將當前整個 Python 環境 和 腳本內容封裝進去的,因此在 Python 環境中第三方庫越多,打包后的可執行檔案越大;
-
解決方案:創建虛擬環境,進入(activate)虛擬環境后 pip 安裝腳本需要用到的庫,然后再用 Pyinstaller 封裝腳本即可,
conda create -n <虛擬環境名稱> python=<Python的版本> conda activate <虛擬環境名稱>
Q2: Mac 下無法打開檔案?
-
原因:雙擊 app 檔案后顯示“應用程式 無法打開”的彈窗,在大多情況下,都是因為對應檔案沒有執行權限;
-
解決方案:在終端用 chmod 命令賦權限,
chmod +x <檔案完整目錄>
Q3: 如何通過引數來控制應用?
- Python 腳本中呼叫外部檔案的變數實作,實際運用時修改外部檔案的內容即可;
- 更優雅的方法:用 Gui 開發工具實作,如簡易便捷的 pysimplegui,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/393942.html
標籤:python
