python + QML程序中調(diào)用WebView后打包
QML中如果加入了WebView控件,在用pyinstaller打包時(shí)不會自動導(dǎo)入,從而導(dǎo)致打包出的程序運(yùn)行報(bào)錯,no WebView plugin found,此時(shí)需要手動將WebView控件復(fù)制到打包后的程序目錄下的PySide6包中,需要復(fù)制的文件有以下四個(gè):
xxx/Lib/site-packages/PySide6/QtWebEngineProcess.exe
xxx/Lib/site-packages/PySide6/plugins/webview
xxx/Lib/site-packages/PySide6/resources
xxx/Lib/site-packages/PySide6/translations/qtwebengine_locales
其中xxx為python程序安裝目錄,例如第一個(gè)文件,我的完整路徑為 'C:/myenvs/Python/Lib/site-packages/PySide6/QtWebEngineProcess.exe' ,打包后的程序目錄中會有一個(gè)PySide6文件夾,將這些文件或文件夾復(fù)制到對應(yīng)的位置就可以了,例如第二行的webview文件夾放到 '打包后的程序目錄/PySide6/plugin' 文件夾下,其他同理。
另外,還可以通過修改打包時(shí)的.spec文件來自動拷貝這些文件,用TXT或其他文本編輯器打開.spec文件,其中 'a = Analysis(' 后面會有一個(gè) 'datas=[]' ,在datas這個(gè)數(shù)組中加入元組,元組的第一個(gè)元素代表from來自哪里,第二個(gè)元素代表to要拷貝到哪里,需要注意的是如果要拷貝的是單個(gè)文件,to后面的目標(biāo)地址寫到該文件所在的文件夾即可,具體例子見下面的main.spec文件.
main.spec