Derzeit (ab PyWebView 3.1) scheint es beim Versuch, eine Anwendung mit PyWebView wie mit PyInstaller auszuführen, ein Problem zu geben, dass die Kompilierung mit der Fehlermeldung "Pyinstaller-Hook kann WebBrowserInterop.x64.dll nicht finden" unterbrochen wird ist.
Ungefähr wie in der obigen Ausgabe scheint der Webhook für PyInstaller nicht auf den richtigen Pfad zu verweisen, und es tritt ein Fehler auf.
Wie ich oben gesehen habe, scheint die neueste Version korrigiert worden zu sein, aber sie wurde noch nicht im öffentlichen Modul wiedergegeben.
Daher ist es mühsam, den Webhook manuell zu reparieren, bis er behoben ist. Deshalb habe ich ein PowerShell-Skript geschrieben.
Wir verwenden ein PowerShell-Skript zum Kompilieren mit PyInstaller. Rufen Sie daher den folgenden Code auf, bevor Sie PyInstaller in der Datei verwenden.
if(Select-String "library = join\(sitepack, 'lib', dll_name\)" -Path .\.venv\Lib\site-packages\PyInstaller\hooks\hook-webview.py){
Write-Host "> Fix PyInstaller\hooks\hook-webview.py"
$data = Get-Content .\.venv\Lib\site-packages\PyInstaller\hooks\hook-webview.py | % {$_ -replace "library = join\(sitepack, 'lib', dll_name\)","library = join(sitepack, 'webview', 'lib', dll_name)"}
$data | Out-File .\.venv\Lib\site-packages\PyInstaller\hooks\hook-webview.py
}
PowerShell 5.x kann UTF-8 jedoch nicht ohne Stückliste verarbeiten. Wenn dies unverändert bleibt, wird eine Webhook-Datei erstellt, die PyInstaller nicht normal lesen kann.
Da PowerShell 6.x problemlos verwendet werden kann, installieren Sie `pwsh (PowerShell 6.x) von Chocolatey usw. im Voraus und führen Sie dieses Skript unter PowerShell 6 aus.
Ich werde auch Code hinzufügen, der gelöscht werden soll, wenn ich versuche, ein Skript in PowerShell 5.x zu starten, falls ich es versehentlich in PowerShell 5.x ausführe.
if(!($PSVersionTable["PSCompatibleVersions"].Major -contains 6)){
Write-Host @'
This script must be PowerShell version 6 or higher before it will work properly.
The shell currently running is PowerShell version 5 or lower.
Use the `pwsh` command to change to PowerShell 6.
'@
exit
}
Es ist sicher, dies in die erste Zeile zu schreiben. Sie werden es bemerken, wenn Sie eine Warnung erhalten.
Recommended Posts