跳到內容

打包成執行檔

你寫好的 .py 檔,別人要執行得先裝 Python 才行。這個專題用 PyInstaller 把程式打包成一個執行檔(Windows 上是 .exe),這樣就能直接傳給別人,對方點兩下就能開,不必裝 Python。

如果你的專案是用 uv 管理的,用 uv add

Terminal window
uv add pyinstaller

沒有用 uv 的話,用 pip 也可以:

Terminal window
pip install pyinstaller

假設你要打包的程式叫 app.py,在它所在的資料夾執行:

Terminal window
pyinstaller --onefile app.py

--onefile 的意思是「打包成單一檔案」。打包完成後,執行檔會出現在新產生的 dist 資料夾裡。

如果你的程式是上一章那種 tkinter 視窗程式,再加上 --windowed,這樣執行時就不會多跳出一個黑色的終端機視窗:

Terminal window
pyinstaller --onefile --windowed app.py

想自訂執行檔的名字,加上 --name

Terminal window
pyinstaller --onefile --windowed --name 我的計算機 app.py

打包完,資料夾裡會多出幾樣東西:

  • dist/你要的執行檔就在這裡,要分享給別人的就是這個檔。
  • build/:打包過程的暫存檔,可以不用管它。
  • 一個 .spec 檔:這次打包的設定,之後要重新打包可以沿用。
  • 防毒軟體誤判:PyInstaller 打包出來的執行檔,有時會被防毒軟體當成可疑程式。這是這類工具常見的誤判,不是你的程式有問題。
  • 檔案很大:因為它把 Python 直譯器和用到的套件全部包進去了,所以即使是很短的程式,打包出來也可能有好幾十 MB,這是正常的。
  • 少了資料檔:如果你的程式會讀圖片、資料檔之類的東西,這些預設不會被打包進去,需要額外設定。單純的練習通常用不到。