Je ne peux pas transformer un projet utilisant PyWebView en un exe avec PyInstaller

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

Je ne peux pas transformer un projet utilisant PyWebView en un exe avec PyInstaller
J'ai essayé d'utiliser la base de données (sqlite3) avec kivy
Impossible de manipuler l'iframe dans la page avec Selenium
Utiliser une imprimante avec Debian 10
Je ne peux pas effectuer de recherche avec # google-map. ..
J'ai eu une erreur de valeur lors de l'utilisation de JUMAN ++ avec PyKNP
Lambda dans VPC ne peut pas envoyer de courrier avec Boto3 même si vous utilisez le point de terminaison VPC pour SES
J'ai fait un Line-bot avec Python!
pyenv-vertualenv n'installe pas correctement la série python3
Impossible de télécharger des images avec Google_images_download
Action que mysql-connector-python ne peut pas être installé avec anaconda
J'ai fait une loterie avec Python.
Lorsque j'exécute le fichier exe avec pyinstaller, mon PC se bloque.
Je ne peux pas utiliser le japonais avec pyperclip
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé un chat-holdem de serveur de jeu de poker en utilisant websocket avec python
Créer un exe Scrapy avec Pyinstaller
J'ai créé un démon avec Python
Utiliser une webcam avec Raspberry Pi
J'ai essayé d'utiliser Amazon SQS avec django-celery
Méthode de mise à jour automatique par python Pyinstaller exe
J'ai fait un compteur de caractères avec Python
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai dessiné une carte thermique avec Seaborn [Python]
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé de dessiner une ligne en utilisant une tortue
Débutant: j'ai créé un lanceur à l'aide d'un dictionnaire
Ce que j'ai fait avec les tableaux Python
Je ne peux plus déployer avec le moteur d'application Google
J'ai fait une carte hexadécimale avec Python
Equipé d'une fonction carte utilisant payjp
J'ai fait un jeu de vie avec Numpy
J'ai fait un générateur Hanko avec GAN
J'ai essayé d'utiliser pipenv, alors prenez note
J'ai fait un jeu rogue-like avec Python
J'ai fait un simple blackjack avec Python
Je ne peux pas installer le package avec pip.
J'ai créé un fichier de configuration avec Python
Je ne peux pas voir le nouveau fichier avec yum
J'ai fait une application WEB avec Django
J'ai fait un simulateur de neurones avec Python
Je veux exécuter et distribuer un programme qui redimensionne les images Python3 + pyinstaller
J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
J'ai fait un robot de remplacement de tampon avec une ligne
Dask ne peut pas être installé sur Ubuntu avec pip
J'ai créé une application graphique avec Python + PyQt5
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'obtiens une UnicodeDecodeError lors de l'exécution avec mod_wsgi
J'ai fait un simple portefeuille de Bitcoin avec pycoin
J'ai créé un Bot LINE avec Serverless Framework!
J'ai essayé d'utiliser Pythonect, un langage de programmation de flux de données.
J'ai essayé de lire un fichier CSV en utilisant Python
Projet Euler 4 Coding avec une nouvelle approche échoue.
[Chat De Tornado] Créez un chat en utilisant WebSocket dans Tornado
J'ai joué avec Diamond, un outil de collecte de métriques
J'ai écrit un analyseur japonais en japonais en utilisant pyparsing.