python 利用Pyinstaller打包Web項(xiàng)目
最近需要用python打包一個(gè)單頁面網(wǎng)頁demo,于是準(zhǔn)備用python包pyinstaller來打包程序。網(wǎng)上搜索了一下,大部分教程都是打包非web項(xiàng)目,這里分享一下打包簡單網(wǎng)頁demo的過程。
系統(tǒng)環(huán)境:win10+python3.6
一、安裝pyinstaller
pip install pyinstaller
二、打包項(xiàng)目
1.如果是單文件項(xiàng)目,pyinstaller可以通過簡單的命令進(jìn)行python代碼的打包工作,其命令為:
pyinstaller -option ***.py
1.1參數(shù)option可以有多個(gè)值:
-F : 指定打包后只生成一個(gè)exe格式的文件
-D : 生成一個(gè)文件目錄包含可執(zhí)行文件和相關(guān)動(dòng)態(tài)鏈接庫和資源文件等(默認(rèn)選項(xiàng))
-c : –console, –nowindowed 使用控制臺(tái),無界面(默認(rèn)選項(xiàng))
-w : –windowed, –noconsole 使用窗口,無控制臺(tái)
1.2注意
?、僭僭黾右粋€(gè)命令參數(shù) -w 可以保證點(diǎn)擊生成的exe文件不會(huì)彈出黑色控制臺(tái)窗口
?、诓患?-F 參數(shù)會(huì)生成一堆文件,但是運(yùn)行速度快; 加-F參數(shù)生成一個(gè)exe文件,運(yùn)行起來慢
2.如果不是單文件項(xiàng)目,而是有多級(jí)目錄(包含一些依賴的靜態(tài)資源),需要自定義打包
本文以打包自己的單頁面網(wǎng)頁demo為例,各級(jí)目錄結(jié)構(gòu)如下:
2.1為了進(jìn)行自定義配置打包,需要先輸出配置文件.spec文件,執(zhí)行命令:
pyi-makespec -D -w main.py
注:
-w 參數(shù)是為了保證不會(huì)產(chǎn)生黑色控制臺(tái)窗口
-D 參數(shù)生成一個(gè)文件目錄包含可執(zhí)行文件和相關(guān)動(dòng)態(tài)鏈接庫和資源文件等(默認(rèn)選項(xiàng),也可以不加)
生成的 main.spec 文件如下:
2.2為了是使打包生成后的exe文件可以加載css、js、圖片等靜態(tài)資源,這里需要添加依賴路徑(注意:要保證自己 html 里面加載靜態(tài)資源的路徑是相對路徑才行)。具體來說,此類資源文件的打包需要設(shè)置Analysis的datas,如下:
2.3執(zhí)行打包命令:
pyinstaller main.spec
成功!
最終結(jié)果:
3.一些報(bào)錯(cuò)
①執(zhí)行打包命令時(shí),報(bào)錯(cuò):RecursionError: maximum recursion depth exceeded
原因:應(yīng)該是python庫遞歸遍歷太深,超過了python預(yù)設(shè)的遞歸深度,導(dǎo)致出現(xiàn) “RecursionError: maximum recursion depth exceeded" 的錯(cuò)誤
解決辦法:在spec文件里設(shè)置一個(gè)大點(diǎn)的遞歸深度,在該文件第二行,添加代碼如下:
import sys sys.setrecursionlimit(50000)
②python打包pywebview時(shí),可能會(huì)報(bào)錯(cuò):WebBrowserInterop.x64.dll not found
原因:這是由于系統(tǒng)沒有找到WebBrowserInterop.x64.dll
解決辦法:將WebBrowserInterop.x64.dll文件的所在路徑添加到系統(tǒng)環(huán)境變量里即可!
WebBrowserInterop.x64.dll文件的所在路徑:
添加到系統(tǒng)環(huán)境變量:
4.注意事項(xiàng)
①如果生成的exe文件雙擊無法正常運(yùn)行,也沒有報(bào)錯(cuò)提示,此時(shí),如果想看具體報(bào)錯(cuò)信息,就不要直接雙擊執(zhí)行,而是在控制臺(tái)下執(zhí)行。如果這樣還是無法看到報(bào)錯(cuò)信息,則在打包軟件時(shí)不要使用 -w 參數(shù),這樣在運(yùn)行生成的exe時(shí)就可以彈出黑色控制臺(tái)窗口,從而就可以在黑色控制臺(tái)上面看到報(bào)錯(cuò)信息
②如果要減小打包體積,可以使用conda創(chuàng)建python虛擬環(huán)境,然后只安裝需要的包,最后再進(jìn)行打包,這樣體積會(huì)大大減小
以上就是python 利用Pyinstaller打包Web項(xiàng)目的詳細(xì)內(nèi)容,更多關(guān)于python 打包項(xiàng)目的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pymongo實(shí)現(xiàn)控制mongodb中數(shù)字字段做加法的方法
這篇文章主要介紹了pymongo實(shí)現(xiàn)控制mongodb中數(shù)字字段做加法的方法,涉及Python使用pymongo模塊操作mongodb數(shù)據(jù)庫字段的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Python3中條件控制、循環(huán)與函數(shù)的簡易教程
這篇文章主要給大家介紹了關(guān)于Python3中條件控制、循環(huán)與函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法
今天小編就為大家分享一篇Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python使用Tkinter實(shí)現(xiàn)滾動(dòng)抽獎(jiǎng)器效果
Tkinter 是 Python 的標(biāo)準(zhǔn) GUI(Graphical User Interface,圖形用戶接口)庫,Python 使用 Tkinter 可以快速地創(chuàng)建 GUI 應(yīng)用程序。這篇文章主要介紹了Python使用Tkinter實(shí)現(xiàn)滾動(dòng)抽獎(jiǎng)器,需要的朋友可以參考下2020-01-01