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為例,各級目錄結構如下:

 

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

pyi-makespec -D -w main.py

注:

-w 參數是為了保證不會產生黑色控制台窗口

-D 參數生成一個文件目錄包含可執行文件和相關動態鏈接庫和資源文件等(默認選項,也可以不加)

生成的 main.spec 文件如下:

2.2為了是使打包生成后的exe文件可以加載css、js、圖片等靜態資源,這里需要添加依賴路徑(注意:要保證自己 html 里面加載靜態資源的路徑是相對路徑才行)。具體來說,此類資源文件的打包需要設置Analysis的datas,如下:

2.3執行打包命令:

pyinstaller main.spec

 成功!

最終結果:

 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文件的所在路徑:

添加到系統環境變量:

4.注意事項

①如果生成的exe文件雙擊無法正常運行,也沒有報錯提示,此時,如果想看具體報錯信息,就不要直接雙擊執行,而是在控制台下執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM