Nous allons décrire une série de méthodes pour générer un fichier exécutable pour l'affichage GUI en utilisant Python. J'ai utilisé wxPython dans la bibliothèque GUI car il était facile à utiliser comme licence.
J'utilise Anaconda pour l'environnement racine. Puisqu'il est en fait utilisé dans un environnement virtuel, je pense que cela convient probablement dans d'autres environnements basés sur Conda.
Anaconda https://www.continuum.io/downloads
Puisque nous voulons l'exécuter dans un test cette fois, nous allons créer un nouvel environnement virtuel avec le nom wxenv sans utiliser l'environnement racine. Exécutez ce qui suit à l'invite de commande (Terminal sur Mac) Remarque: depuis mai 2017, PyInstaller ne prend en charge que Python 3.5.
command
conda create -n wxenv python=3.5.3
#Lors de la création avec un ensemble d'Anaconda
# conda create -n wxenv python=3.5.3 anaconda
#Lors de la vérification de l'environnement créé
# conda info -e
# conda list -n wxenv
#Lors de la suppression de l'environnement virtuel créé
# conda remove -n wxenv --all
Le travail ultérieur est effectué dans l'environnement virtuel.
command
# Windows
activate wxenv
#Désactiver
# deactivate
# Mac
source activate wxenv
#Désactiver
# source deactivate
WxPython
https://wxpython.org/
Fondamentalement, wxPython semble être une série Python2, mais j'utilise wxPython qui fonctionne avec 3 séries appelées version Phoenix. On dit qu'il prend en charge PyPI à partir d'avril 2017, et il semble qu'il puisse être installé en exécutant la commande suivante.
command
pip install wxpython
Créez un fichier d'exécution de test dans un emplacement approprié comme indiqué ci-dessous et enregistrez-le.
main.py
#! env python
# -*- coding: utf-8 -*-
import wx
import sys,os
if __name__ == '__main__':
app = wx.App(False)
frame = wx.Frame(None, wx.ID_ANY, "Hello World")
frame.Show(True)
app.MainLoop()
PyInstaller
command
pip install pyinstaller
Windows Pour Windows, installez également les éléments suivants
windows
pip install pypiwin32
Tout d'abord, la sortie d'une invite de commande normale.
command
#Déplacer vers l'emplacement de sauvegarde du fichier d'exécution de test généré précédemment
cd (Emplacement de stockage des fichiers)
#Exécutez PyInstaller (1 répertoire facultatif, 1 fichier, console masquée et commande pour effacer le résultat de sortie précédent)
pyinstaller main.py -D -F -w --clean
Quand tu cours Le fichier exe généré doit avoir été généré dans un dossier appelé dist.
Il est généré même si vous exécutez pyinstaller normalement, mais vous voudrez peut-être faire des ajustements fins au moment de la génération. Dans ce cas, vous pouvez créer un fichier de spécification, réécrire le fichier dans un paramètre pratique, puis demander à pyinstaller de lire le paramètre et de le sortir.
https://pythonhosted.org/PyInstaller/spec-files.html https://pythonhosted.org/PyInstaller/usage.html#options
command
#Déplacer vers l'emplacement du fichier d'exécution du test (pas nécessaire s'il est déjà déplacé)
cd (Emplacement de stockage des fichiers)
#Générer un fichier de spécifications
#Nom du fichier cible, spécification du nom du fichier à générer, 1 répertoire, 1 fichier en option, console masquée
pyi-makespec main.py -n="main" -D -F -w
L'exécution de ce qui précède générera un fichier appelé main.spec. Dans ce fichier, il y a chaque paramètre utilisé par PyInstaller, qui peut être modifié pour spécifier un fichier externe. Si vous ne pouvez pas le générer correctement ici, essayez de supprimer la partie (-F) d'un fichier. En outre, certaines bibliothèques externes peuvent avoir besoin d'être notées dans le fichier de spécifications. Pour plus de détails, consultez Ajout de fichiers binaires dans Official.
command
#Spécifiez le fichier de spécifications et exécutez
pyinstaller main.spec
Vous devriez maintenant avoir un fichier exe dans un répertoire appelé dist.
Lors de l'exécution avec PyInstaller, il est pratique d'écrire le contenu suivant dans un fichier Python et de faire du répertoire contenant le fichier exécutable le répertoire de travail.
main.py
os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
Sur Mac, wxPython ne semble pas fonctionner à moins que vous n'utilisiez pythonw au lieu de python. http://www.sevencredit.com/2015/07/31/702/
Matplotlib
Même si Matplotlib est enregistré dans PyInstaller, il ne fonctionne souvent pas en raison du lien Qt tel qu'il est. Pour contourner ce problème, un autre backend devrait fonctionner immédiatement après ʻimport matplot lib`.
import matplotlib
matplotlib.use('TkAgg')
#Ce qui suit est omis
https://github.com/pyinstaller/pyinstaller/issues/2857 http://chick.g.hatena.ne.jp/allegro/20091009/p3
WxFormBuilder
Dans mon cas, l'édition WxPython utilise wxFormBuilder. https://qiita.com/mm_sys/items/716cb159ea8c9e634300
Il y avait un moyen de fonctionner plus léger et plus rapide que PyInstaller, j'ai donc créé un article séparé.
https://qiita.com/mm_sys/items/1fd3a50a930dac3db299
Recommended Posts