1. 程式人生 > 程式設計 >python 利用Pyinstaller打包Web專案

python 利用Pyinstaller打包Web專案

最近需要用python打包一個單頁面網頁demo,於是準備用python包pyinstaller來打包程式。網上搜索了一下,大部分教程都是打包非web專案,這裡分享一下打包簡單網頁demo的過程。

系統環境:win10+python3.6

一、安裝pyinstaller

pip install pyinstaller

二、打包專案

1.如果是單檔案專案,pyinstaller可以通過簡單的命令進行python程式碼的打包工作,其命令為:

pyinstaller -option ***.py

  1.1引數option可以有多個值:

    -F : 指定打包後只生成一個exe格式的檔案

    -D : 生成一個檔案目錄包含可執行檔案和相關動態連結庫和資原始檔等(預設選項)
    -c : –console, –nowindowed 使用控制檯,無介面(預設選項)
    -w : –windowed, –noconsole 使用視窗,無控制檯

  1.2注意

    ①再增加一個命令引數 -w 可以保證點選生成的exe檔案不會彈出黑色控制檯視窗

   ②不加 -F 引數會生成一堆檔案,但是執行速度快;加-F引數生成一個exe檔案,執行起來慢

2.如果不是單檔案專案,而是有多級目錄(包含一些依賴的靜態資源),需要自定義打包

本文以打包自己的單頁面網頁demo為例,各級目錄結構如下:

python 利用Pyinstaller打包Web專案

python 利用Pyinstaller打包Web專案

2.1為了進行自定義配置打包,需要先輸出配置檔案.spec檔案,執行命令:

pyi-makespec -D -w main.py

注:

-w 引數是為了保證不會產生黑色控制檯視窗

-D 引數生成一個檔案目錄包含可執行檔案和相關動態連結庫和資原始檔等(預設選項,也可以不加)

生成的 main.spec 檔案如下:

python 利用Pyinstaller打包Web專案

2.2為了是使打包生成後的exe檔案可以載入css、js、圖片等靜態資源,這裡需要新增依賴路徑(注意:要保證自己 html 裡面載入靜態資源的路徑是相對路徑才行)。具體來說,此類資原始檔的打包需要設定Analysis的datas,如下:

python 利用Pyinstaller打包Web專案

2.3執行打包命令:

pyinstaller main.spec

成功!

最終結果:

python 利用Pyinstaller打包Web專案

python 利用Pyinstaller打包Web專案

3.一些報錯

①執行打包命令時,報錯:RecursionError: maximum recursion depth exceeded

原因:應該是python庫遞迴遍歷太深,超過了python預設的遞迴深度,導致出現 “RecursionError: maximum recursion depth exceeded" 的錯誤

解決辦法:在spec檔案裡設定一個大點的遞迴深度,在該檔案第二行,新增程式碼如下:

import sys
sys.setrecursionlimit(50000)

②python打包pywebview時,可能會報錯:WebBrowserInterop.x64.dll not found

原因:這是由於系統沒有找到WebBrowserInterop.x64.dll

解決辦法:將WebBrowserInterop.x64.dll檔案的所在路徑新增到系統環境變數裡即可!

WebBrowserInterop.x64.dll檔案的所在路徑:

python 利用Pyinstaller打包Web專案

新增到系統環境變數:

python 利用Pyinstaller打包Web專案

4.注意事項

①如果生成的exe檔案雙擊無法正常執行,也沒有報錯提示,此時,如果想看具體報錯資訊,就不要直接雙擊執行,而是在控制檯下執行。如果這樣還是無法看到報錯資訊,則在打包軟體時不要使用 -w 引數,這樣在執行生成的exe時就可以彈出黑色控制檯視窗,從而就可以在黑色控制檯上面看到報錯資訊

②如果要減小打包體積,可以使用conda建立python虛擬環境,然後只安裝需要的包,最後再進行打包,這樣體積會大大減小

以上就是python 利用Pyinstaller打包Web專案的詳細內容,更多關於python 打包專案的資料請關注我們其它相關文章!