天天看點

使用PyInstaller将Python檔案打包成Windows系統可執行檔案

作者:學為先程式設計
使用PyInstaller将Python檔案打包成Windows系統可執行檔案

官網

PyInstaller官方網站:http://www.pyinstaller.org/

國内鏡像庫

PyInstaller Gitee:https://gitee.com/mirrors/pyinstaller

簡介

在開發一些小工具給他人使用時,他人的系統中可能并沒有安裝python環境或沒有安裝相應的第三方庫,要求對方安裝不怎麼現實,特别是對方不是技術人員的時候,此時将開發好的腳步通過pyinstaller打包成一個可執行檔案是個不錯的選擇。

pyinstaller本身可以跨平台使用,但這裡的跨平台指的是pyinstaller本身,通過pyinstaller打包出來的檔案是無法跨平台的,在MacOS下使用pyinstaller打包python程式,打包後的内容隻可在MacOS下運作,在windwos下打包的python程式,隻可在Windows下運作。

安裝Pyinstaller

  • 安裝pywin32

    下載下傳安裝檔案:查找到跟自己适用的python版本及window系統版本比對的pywin32,下載下傳後安裝

使用pip指令安裝:pip install pywin32
  • 安裝Pyinstaller

    下載下傳安裝檔案安裝:官網

使用pip指令安裝:pip install pyinstaller
使用PyInstaller将Python檔案打包成Windows系統可執行檔案

使用Pyinstaller

打包方式

  • 使用下載下傳Pyinstaller打包方式

    将需要打包的檔案放在解壓得到的Pyinstaller檔案夾中,打開cmd視窗,把路徑切換到目前路徑打開指令提示行,輸入以下内容(最後的是檔案名):

python pyinstaller.py -F myfile.py
  • 使用pip Pyinstaller打包方式

    打開cmd視窗,把路徑切換到檔案所在路徑(檔案随便放在哪裡都行)打開指令提示行,輸入以下内容(最後的是檔案名):

pyinstaller -F myfile.py

打包參數

pyinstaller最重要的兩個參數就是-F與-D參數

  • -F:表示在 dist 檔案夾下隻生成單個可執行檔案(内部包含所有依賴),不加預設會在 dist 生成一大堆依賴檔案 + 可執行檔案。
  • -D:與 -F 相反用法。
  • -W:表示去掉控制台視窗,如果你的程式是有界面的,可以不寫這個參數。但是測試情況下建議先加上這個參數,因為如果打包不成功,運作時報錯資訊會在控制台上輸出,沒有控制台就看不到報錯資訊。
  • -c:表示去掉窗框,使用控制台。
  • -p:表示指定程式的依賴庫位置或者自己定義需要加載的類路徑,項目中包含多個自模組化塊的時候需要加上 -p aaa.py -p bbb.py -p ccc.py
使用PyInstaller将Python檔案打包成Windows系統可執行檔案

Ps:不指定依賴庫無法打包應用程式。

  • -i:表示可執行檔案的圖示,後面跟圖示的路徑(例 -i "icon.icns",Mac 下圖示檔案為 icns 格式, Win 為ico 格式)。
  • -n:設定打包後的應用名稱,例 -n "小程式"。
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
  • --hidden-import:後面跟子產品名如 queue,用于告訴打包程式某個子產品我用不着你不用打包進去。

打包指令

綜上所述,最常用的指令為:

# 常用打包參數
# -F -D 互斥參數
-F  打包成一個 exe 檔案,小項目可以采用,打開比較慢,多個 .py 打包時不能使用
-D  預設參數,打包結果放入到建立的檔案夾中,可以看到裡面有很多的依賴檔案

# -w -c 互斥參數
-w  使用項目的 GUI 界面,無 cmd 控制台
-c  預設參數,使用 cmd 控制台 如果打封包件執行報錯,可嘗試用 -c 顯示控制台

-n  執行項目的名稱,預設 .py 的檔案名
-i  将 ico 圖示打包到 exe 檔案中,(例 `-i "icon.icns"`,`Mac` 下圖示檔案為 `icns` 格式, `Win` 為`ico` 格式)。

--hidden-import 打包時導包資訊
# 打包 PyQt 項目強烈建議 帶上以下參數
--hidden-import PyQt5.sip

# 打包指令示例
# 在項目的根目錄下執行打包指令
pyinstaller -F SendMsgPerson2.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 二級拉動(超過3天)

# 打包結果輸出在項目根目錄下的 dist 檔案夾中
# 不建議使用 -F 打包成一個 exe 檔案 所謂:打包一時爽,打開 5 秒鐘
# 非 -F 指令下, 靜态資源、建好的 Sqlite 資料庫可以直接放入 dist 中生成的檔案夾中
           

打包步驟

  • 第一步,在App根目錄輸出cmd,進入指令視窗
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
  • 第二步,在App根目錄放入favicon.ico圖示作為exe可執行檔案的Logo
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
  • 第三步,輸入下面的指令進行打包
pyinstaller -F SendMsgPerson2.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 二級拉動(超過3天)           
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
  • 第四步,生成spec檔案和exe可執行檔案
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
  • 第五步,借助Windows系統的“任務計劃程式”定時執行exe可執行檔案
使用PyInstaller将Python檔案打包成Windows系統可執行檔案
分級拉動指令如下:
  • pyinstaller -F SendTestTaskPerson.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 分級拉動(測試單提醒)
  • pyinstaller -F SendMsgPerson.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 分級拉動(全部)
  • pyinstaller -F SendBugPerson.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 分級拉動(缺陷提醒)
  • pyinstaller -F SendBugRobotCard.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 分級拉動(缺陷提醒機器人)
  • pyinstaller -F SendStoryPerson.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 分級拉動(BUG轉需求提醒)
  • pyinstaller -F SendZentaoDataPerson.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 個性化提醒(禅道與釘釘昨日資料)
  • pyinstaller -F SendDruidPersonDev.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 接口性能自動化巡檢機器人(開發環境)
  • pyinstaller -F SendDruidPersonTest.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 接口性能自動化巡檢機器人(測試環境)
  • pyinstaller -F SendDruidPersonProd.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 長春軌道交通營運-接口性能巡檢機器人(生産環境)
  • pyinstaller -F SendDruidPersonProd1.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 長春軌道交通營運-讀取接口平均耗時(生産環境)
  • pyinstaller -F -w GuiLoginPage.py -i favicon.ico -p D:\work\tools\Python\Python36\Lib\site-packages -n 接口性能巡檢機器人配置助手