[PYTHON] Comment transformer un fichier .py en fichier .exe

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.

environnement

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.

Installation

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.)

Méthode d'exécution

--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:

Installation

$ pipenv install pyinstaller

#Sous environnement non virtuel
$ pip install pyinstaller

Méthode d'exécution

    $ 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.

À propos de la capacité et du temps d'exécution du fichier .exe généré par pyinstaller

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.

Résumé

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

Comment transformer un fichier .py en fichier .exe
Comment convertir Python en fichier exe
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas
Comment créer un fichier de configuration
[Python Kivy] Comment créer un fichier exe avec pyinstaller
[Python] Comment générer une table pandas dans un fichier Excel
Comment spécifier un fichier .py à charger au démarrage dans IPython 0.13
Comment lire un fichier CSV avec Python 2/3
Comment déguiser un fichier ZIP en fichier PNG
Comment créer un fichier JSON en Python
[Automation] Convertissez le code Python en fichier exe
Comment lire des fichiers dans différents répertoires
Backtrader Comment importer un indicateur depuis un autre fichier
Comment convertir un spectrogramme Mel en un fichier wav
Comment déployer une application Go sur une instance ECS
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
Comment appeler une fonction
Télécharger un fichier sur Dropbox
Comment pirater un terminal
Comment mettre un lien hypertexte vers "file: // hogehoge" avec sphinx-> pdf
Comment convertir un tableau en dictionnaire avec Python [Application]
Comment importer des fichiers où vous le souhaitez en Python
Comment générer une clé publique à partir d'une clé privée SSH
Comment créer un package Python (écrit pour un stagiaire)
Comment vérifier si une valeur existe dans un type d'énumération
Comment utiliser un fichier autre que .fabricrc comme fichier de configuration
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
Comment créer un fichier ISO (image CD) sous Linux
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment faire une traduction japonais-anglais
J'ai essayé de transformer un fichier Python en un EXE (erreur de récursivité prise en charge)
Comment mettre un lien symbolique
Comment créer un bot slack
Comment créer un package Conda
Écrire la sortie standard dans un fichier
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Comment créer un robot - Avancé
Comment créer une fonction récursive
Comment créer un pont virtuel
Comment combiner tous les CSV d'un dossier en un seul CSV
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
[Django] Comment lire les variables / constantes définies dans un fichier externe
[Python] Comment stocker un fichier csv en tant que données de tableau à une dimension
Comment créer un Dockerfile (basique)
[Blender] Comment créer un plug-in Blender
Convertir une chaîne en image
Comment supprimer un conteneur Docker
Comment créer un fichier factice CSV contenant du japonais à l'aide de Faker
Comment obtenir un ingénieur de la trentaine
Comment créer un robot - Basic
[ROS2] Comment lire un fichier bag avec le lancement au format python
Comment transformer un mauvais code avec la refactorisation Python en code ordinaire qui n'est pas une belle conception orientée objet
Tutoriel "Cython" pour rendre Python explosif: Comment analyser la classe Enum définie en code C ++ vers Enum en Python.
Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide
Comment mettre un numéro de ligne au début d'un fichier CSV
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Utilisez BeautifulSoup pour extraire un lien contenant une chaîne d'un fichier HTML