Actuellement (à partir de PyWebView 3.1), lorsque j'essaie de créer une application qui utilise PyWebView dans un exe avec PyInstaller tel quel, il semble y avoir un problème: la compilation est interrompue avec le message d'erreur Pyinstaller hook cannot find WebBrowserInterop.x64.dll
. est.
C'est à peu près le même que le problème ci-dessus, mais il semble que le webhook pour PyInstaller ne pointe pas vers le chemin correct et une erreur se produit.
Comme j'ai vu ce qui précède, il semble que la dernière version a été corrigée, mais elle n'a pas encore été reflétée dans le module public.
Il est donc difficile de corriger manuellement le webhook jusqu'à ce qu'il soit corrigé, j'ai donc écrit un script PowerShell.
Nous utilisons un script PowerShell pour compiler avec PyInstaller, appelez donc le code suivant avant d'utiliser PyInstaller dans le fichier.
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
}
Cependant, PowerShell 5.x ne peut pas gérer UTF-8 sans BOM, donc si cela est laissé tel quel, un fichier webhook que PyInstaller ne peut pas lire normalement sera créé.
Comme PowerShell 6.x peut être utilisé sans problème, installez `pwsh (PowerShell 6.x) de Chocolatey etc. à l'avance et exécutez ce script sur PowerShell 6.
J'ajouterai également du code à supprimer lorsque j'essaierai de lancer un script dans PowerShell 5.x au cas où je l'exécuterais accidentellement dans PowerShell 5.x.
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
}
Il est prudent d'écrire ceci sur la première ligne. Vous le remarquerez lorsque vous recevrez un avertissement.
Recommended Posts