Je l'ai posté pour la première fois après l'avoir enregistré parce que j'en avais besoin pour les affaires et j'ai essayé de le découvrir et de l'essayer. J'utilise py2exe et pyinstaller, et enfin pyinstaller. Toutes les descriptions supposent un environnement virtuel avec pipenv. [^ 1] Veuillez lire comme il convient.
N'hésitez pas à commenter s'il y a des erreurs.
py2exe Après de nombreuses recherches, il est plus léger et plus rapide que le pyinstaller! J'ai essayé de l'utiliser, mais pour une raison quelconque, s'il y a des modules tels que pandas et scipy, le fichier dépendant fuit et une erreur d'importation se produit au moment de l'exécution. (Il n'y avait aucun problème avec numpy. De plus, si vous vérifiez diverses choses sur Github etc., matplotlib et QtPy etc. peuvent également être un problème.) J'ai essayé de rétrograder la bibliothèque en fonction de la version de la version de py2exe que j'utilisais (0.9.3.2), mais cela ne s'est pas amélioré. Une fois, j'ai abandonné py2exe ici.
J'ai essayé de l'exécuter avec un simple fichier, je vais donc vous expliquer uniquement comment l'utiliser.
Téléchargez le fichier .whl depuis Github en fonction de votre environnement et de votre version. ensuite,
$ pipenv install py2exe-0.9.3.2-cp37-none-win_amd64.whl
#Sous environnement non virtuel
$ pip install py2exe-0.9.3.2-cp37-none-win_amd64.whl
Ensuite, vous pouvez l'installer.
(Vous pouvez également installer avec pip install py2exe
, mais ce sera une version plus ancienne.)
--Créez setup.py dans la même hiérarchie que le fichier que vous souhaitez exécuter (spécifiez différentes options ici. Pour plus de détails, veuillez contacter un enseignant Google).
setup.py
from distutils.core import setup
import setuptools
import py2exe
setup(
console = [{'script': 'xxx.py'}] #Fichier pour être exe
)
--Exécution
$ pipenv run python setup.py py2exe
Cela créera hello.exe sous le répertoire dist.
pyinstaller Lors de l'utilisation d'une bibliothèque telle que pandas ou numpy, j'ai évité de l'utiliser en raison de la double douleur d'être plus lente et plus grande que py2exe, mais comme py2exe était comme celle décrite ci-dessus, utilisez ceci. À.
référence:
$ pipenv install pyinstaller
#Sous environnement non virtuel
$ pip install pyinstaller
$ pipenv run pyinstaller xxx.py
résultat
.
├─build
│ └─xxx
└─dist
└─xxx
├─xxx.exe #Fichier exécutable généré
├─Include
├─numpy
├─pandas
Tout moins de xxx est requis pour l'exécution.
--Lors de la conversion de fichiers ensemble en exe
$ pipenv run pyinstaller xxx.py --onefile
résultat
.
├─build
│ └─xxx
└─dist
└─xxx.exe #Fichier exécutable généré
Rafraîchissant.
Créez un fichier .py simple et expérimentez. L'environnement est le même que ci-dessus.
--Fichier utilisé
hello.py
import sys
import numpy
import pandas
with open('test.txt', 'w') as f:
f.write(f'argv: {sys.argv}') #Vérifiez si l'argument peut être passé correctement
--Exécuter
$ pipenv run pyinstaller hello.py # --onefile
$ dist/hello.exe hello world 1 2 3
--Fichier de sortie
test.txt
argv: ['C:{PATH}\\hello.exe', 'hello', 'world', '1', '2', '3']
La façon de passer l'argument semble être la même que l'exécution de .py.
--Résultat
Taille du fichier(répertoire dist) | Temps d'exécution | |
---|---|---|
normal | 148MB | <1s |
onefile | 55MB | 10~20s |
Il semble y avoir un compromis entre la capacité et le temps d'exécution. Même 55 Mo est assez grand.
Il peut être utilisé lors de l'incorporation d'un modèle d'apprentissage automatique entraîné dans un logiciel existant écrit dans un langage autre que python, mais je suis préoccupé par la taille de la capacité et la dépendance avec d'autres bibliothèques non utilisées cette fois. Où ça devient. Si vous en avez envie, je vais expérimenter un peu plus et l'ajouter. [^ 1]: Puisqu'il y avait une description que toutes les bibliothèques de l'environnement sont incluses dans l'exe lors de l'exécution de la conversion exe et que la capacité devient ridiculement grande, utilisez pipenv pour installer et exécuter la bibliothèque minimale. ing.
Recommended Posts