1. PyInstaller 介紹
1.1. 什麼是 PyInstaller?
PyInstaller 是一個用於將 Python 程序打包成獨立可執行文件的工具,支持 Windows、Linux 和 macOS 操作系統。它可以將 Python 腳本及其依賴的庫和文件打包為一個獨立的應用程序,這樣用户在沒有安裝 Python 的情況下也可以運行程序。
1.2. 安裝 PyInstaller
在命令行中使用 pip 安裝 PyInstaller:
pip install pyinstaller
2. Pyinstall使用
2.1. 打包 Python 程序
使用 PyInstaller 打包 Python 程序時,執行以下命令:
pyinstaller your_script.py
這將會:
- 在當前目錄創建一個
dist文件夾,其中包含了打包好的可執行文件。 - 生成一個
build文件夾,其中包含了打包過程中的臨時文件。 - 生成一個
.spec文件,這個文件用於配置打包過程。
2.1.1. 常用選項
--onefile:將所有內容打包成一個單獨的可執行文件。
pyinstaller --onefile your_script.py--windowed:禁止在運行時顯示命令行窗口(適用於 GUI 程序)。
pyinstaller --windowed your_script.py--icon=icon.ico:為生成的可執行文件指定一個圖標。
pyinstaller --icon=icon.ico your_script.py--add-data=SOURCE:DEST:將額外的文件(如數據文件)打包到程序中。在 Windows 系統中,源路徑和目標路徑之間需要用分號(;)分隔:要將文件放入頂級應用程序目錄,請使用 . 作為 dest_dir。
pyinstaller --add-data="data.txt;." your_script.py在 Windows 系統上,分隔符使用分號;,而在 Linux/macOS 系統上,使用冒號:。
參考
pyinstaller --onedir --windowed --icon="D:\05_Code\python\bugzila\favicon.ico" --add-data="D:\05_Code\python\bugzila\paths.json:." "D:\05_Code\python\bugzila\fetch_buginfo_by_API_UI.py"
2.2. 打包後的文件結構
當你使用 PyInstaller 打包程序時,以下是生成的文件和文件夾結構:
your_script/
│
├── dist/
│ └── your_script.exe # 最終的可執行文件
│
├── build/
│ └── your_script/ # 臨時構建文件
│
├── your_script.spec # 配置文件,用於定製打包過程
└── your_script.py # 原始的 Python 腳本
2.3. 自定義配置(使用 .spec 文件)
PyInstaller 生成的 .spec 文件用於定製打包過程。如果你想要更精細的控制(例如指定多個數據文件、修改打包的方式等),可以編輯這個文件並使用它來重新打包:
pyinstaller your_script.spec
在 .spec 文件中,你可以配置以下內容:
- 隱藏控制枱窗口:設置
console=False來避免在運行時彈出控制枱窗口(適用於 GUI 應用程序)。 - 包含額外的數據文件或依賴庫:可以通過
datas和binaries選項將額外的資源文件添加到打包文件中。
3. 注意事項和問題
- 調試:如果在打包過程中遇到問題,可以加上
--debug參數來進行調試。
pyinstaller --debug your_script.py - 文件路徑問題:PyInstaller 打包後的程序可能會出現相對路徑問題。解決方法是使用
sys._MEIPASS來獲取程序的運行路徑。
python
import sys
import os
if hasattr(sys, '_MEIPASS'):
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
- 文件權限問題,確保附帶打包文件路徑存在,
File "fetch_buginfo_by_API_UI.py", line 537, in <module>
File "fetch_buginfo_by_API_UI.py", line 46, in load_paths
PermissionError: [Errno 13] Permission denied: 'D:\\05_Code\\python\\bugzila\\dist\\fetch_buginfo_by_API_UI\\_internal\\paths.json'
- 外部庫:某些第三方庫(如 PyQt、Pandas 等)可能需要額外的配置或打包選項。
4. icon的獲取
4.1. 獲取網頁的圖標favicon
要獲取網頁的圖標,通常是指獲取網站的 favicon,它是顯示在瀏覽器標籤上的小圖標。你可以通過以下幾種方式獲取網頁的圖標:
4.1.1. 1. 從瀏覽器獲取網頁圖標--chrome沒用
- 打開你想獲取圖標的網站。
- 在瀏覽器的地址欄中,網站的 favicon 圖標會出現在網站 URL 左側,通常是一個小的圖標。
- 右鍵點擊圖標並選擇 "複製圖片地址" 或 "保存圖片為",然後將其保存到本地。
4.1.2. 2. 查看網頁源代碼
- 右鍵點擊網頁並選擇 "查看頁面源代碼"。
- 搜索
<link rel="icon">標籤,它通常包含 favicon 圖標的鏈接,例如:
html
<link rel="icon" href="https://example.com/favicon.ico" /> - 獲取該 URL 即為圖標的地址。
4.1.3. 3. 使用在線工具下載圖標
- 一些網站提供下載網站 favicon 的服務。例如:
- favicon.io:輸入網站 URL,網站會自動生成並允許下載網站的 favicon。
- Real Favicon Generator:一個生成網站圖標和下載多種格式 favicon 的工具。
4.2. 網站下載
4.2.1. 推薦的圖標網站
如果你需要為你的應用程序或網站選擇其他圖標,以下是一些免費的圖標資源網站:
- IconFinder
提供大量的免費和付費圖標,支持多種格式,可以按顏色、大小、主題等篩選。 - Flaticon
擁有超過 300 萬個免費的圖標資源,提供 SVG、PNG、EPS、PDF 格式的圖標,適合各種設計需求。
標庫,提供了大量免費的 SVG 圖標,廣泛用於網站和 Web 應用的設計。
- IconArchive --免費的
提供多種主題的圖標,涵蓋了操作系統圖標、應用圖標等,用户可以免費下載並使用。 - Material Icons
Google 提供的 Material Design 圖標庫,提供豐富的圖標,適合 Web 和移動端應用。