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為例,各級目錄結構如下:
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 syssys.setrecursionlimit(50000)
②python打包pywebview時,可能會報錯:WebBrowserInterop.x64.dll not found
原因:這是由于系統沒有找到WebBrowserInterop.x64.dll
解決辦法:將WebBrowserInterop.x64.dll文件的所在路徑添加到系統環境變量里即可!
WebBrowserInterop.x64.dll文件的所在路徑:
添加到系統環境變量:
4.注意事項
①如果生成的exe文件雙擊無法正常運行,也沒有報錯提示,此時,如果想看具體報錯信息,就不要直接雙擊執行,而是在控制臺下執行。如果這樣還是無法看到報錯信息,則在打包軟件時不要使用 -w 參數,這樣在運行生成的exe時就可以彈出黑色控制臺窗口,從而就可以在黑色控制臺上面看到報錯信息
②如果要減小打包體積,可以使用conda創建python虛擬環境,然后只安裝需要的包,最后再進行打包,這樣體積會大大減小
以上就是python 利用Pyinstaller打包Web項目的詳細內容,更多關于python 打包項目的資料請關注好吧啦網其它相關文章!
相關文章: