[PYTHON] So verwandeln Sie eine .py-Datei in eine .exe-Datei

Ich habe es zum ersten Mal nach der Aufnahme gepostet, weil ich es geschäftlich brauchte und versuchte, es herauszufinden und auszuprobieren. Ich benutze py2exe und pyinstaller und schließlich pyinstaller. Alle Beschreibungen setzen eine virtuelle Umgebung mit pipenv voraus. [^ 1] Bitte lesen Sie gegebenenfalls.

Bitte zögern Sie nicht zu kommentieren, wenn es irgendwelche Fehler gibt.

Umgebung

py2exe Nach vielen Recherchen ist es leichter und schneller als der Pyinstaller! Ich habe versucht, es zu verwenden, aber aus irgendeinem Grund, wenn es Module wie Pandas und Scipy gibt, sind die abhängigen Dateien durchgesickert und zur Laufzeit tritt ein Importfehler auf. (Es gab kein Problem mit numpy. Auch wenn Sie verschiedene Dinge auf Github usw. überprüfen, scheint es, dass matplotlib und QtPy usw. auch ein Problem sein können.) Ich habe versucht, die Bibliothek gemäß der Version der von mir verwendeten Version von py2exe (0.9.3.2) herunterzustufen, aber es hat sich nicht verbessert. Ich habe py2exe hier einmal aufgegeben.

Ich habe versucht, es mit einer einfachen Datei auszuführen, daher werde ich nur erklären, wie man es benutzt.

Installation

Laden Sie die .whl-Datei von Github entsprechend Ihrer Umgebung und Version herunter. danach,

$ pipenv install py2exe-0.9.3.2-cp37-none-win_amd64.whl

#In einer nicht virtuellen Umgebung
$ pip install py2exe-0.9.3.2-cp37-none-win_amd64.whl

Dann können Sie es installieren. (Sie können auch mit pip install py2exe installieren, es wird jedoch eine ältere Version sein.)

Ausführungsmethode

--Erstellen Sie setup.py in derselben Hierarchie wie die Datei, die Sie ausführen möchten (geben Sie hier verschiedene Optionen an. Weitere Informationen erhalten Sie von Google Teacher).

setup.py


    from distutils.core import setup
    import setuptools
    import py2exe

    setup(
        console = [{'script': 'xxx.py'}] #Datei, die exe sein soll
    )

--Ausführung

    $ pipenv run python setup.py py2exe

Dadurch wird hello.exe im Verzeichnis dist erstellt.

pyinstaller Wenn ich eine Bibliothek wie pandas oder numpy benutze, habe ich sie vermieden, weil ich doppelt so langsam und größer als py2exe bin. Da py2exe jedoch wie oben beschrieben war, benutze ich dies. Zu.

Referenz:

Installation

$ pipenv install pyinstaller

#In einer nicht virtuellen Umgebung
$ pip install pyinstaller

Ausführungsmethode

--Wenn Sie Dateien in exe konvertieren, ohne sie zu sammeln

    $ pipenv run pyinstaller xxx.py

Ergebnis

    .
    ├─build
    │  └─xxx
    └─dist
        └─xxx
            ├─xxx.exe  #Generierte ausführbare Datei
            ├─Include
            ├─numpy
            ├─pandas
            

Alle weniger als xxx sind für die Ausführung erforderlich.

--Wenn Sie Dateien zusammen in exe konvertieren

    $ pipenv run pyinstaller xxx.py --onefile

Ergebnis

    .
    ├─build
    │  └─xxx
    └─dist
       └─xxx.exe  #Generierte ausführbare Datei

Erfrischend.

Informationen zur Kapazität und Ausführungszeit der von pyinstaller generierten EXE-Datei

Erstellen Sie eine einfache .py-Datei und experimentieren Sie. Die Umgebung ist die gleiche wie oben.

hello.py


    import sys
    import numpy
    import pandas

    with open('test.txt', 'w') as f:
        f.write(f'argv: {sys.argv}') #Überprüfen Sie, ob das Argument ordnungsgemäß übergeben werden kann

--Ausführen

$ pipenv run pyinstaller hello.py # --onefile
$ dist/hello.exe hello world 1 2 3

test.txt


argv: ['C:{PATH}\\hello.exe', 'hello', 'world', '1', '2', '3']

Das Übergeben des Arguments scheint dasselbe zu sein wie das Ausführen von .py.

--Ergebnis

Dateigröße(dist-Verzeichnis) Ausführungszeit
normal 148MB <1s
onefile 55MB 10~20s

Es scheint einen Kompromiss zwischen Kapazität und Ausführungszeit zu geben. Sogar 55 MB sind groß genug.

Zusammenfassung

Es kann verwendet werden, wenn ein trainiertes Modell für maschinelles Lernen in vorhandene Software integriert wird, die in einer anderen Sprache als Python geschrieben ist. Ich bin jedoch besorgt über die Größe der Kapazität und die Abhängigkeit von anderen Bibliotheken, die diesmal nicht verwendet werden. Wo es wird. Wenn Sie Lust dazu haben, werde ich ein bisschen mehr experimentieren und es hinzufügen. [^ 1]: Da bei der Ausführung der Exe-Konvertierung beschrieben wurde, dass alle Bibliotheken in der Umgebung in der Exe enthalten sind und die Kapazität lächerlich groß wird, verwenden Sie pipenv, um die Mindestbibliothek zu installieren und auszuführen. ing.

Recommended Posts

So verwandeln Sie eine .py-Datei in eine .exe-Datei
So konvertieren Sie Python in eine exe-Datei
So fügen Sie eine CSV-Datei mit Pandas in eine Excel-Datei ein
So erstellen Sie eine Konfigurationsdatei
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
So geben Sie eine .py-Datei an, die beim Start in IPython 0.13 geladen werden soll
Lesen einer CSV-Datei mit Python 2/3
So tarnen Sie eine ZIP-Datei als PNG-Datei
So erstellen Sie eine JSON-Datei in Python
[Automatisierung] Konvertieren Sie Python-Code in eine exe-Datei
So lesen Sie Dateien in verschiedenen Verzeichnissen
Backtrader So importieren Sie einen Indikator aus einer anderen Datei
So konvertieren Sie ein Mel-Spektrogramm zurück in eine WAV-Datei
So stellen Sie eine Go-Anwendung auf einer ECS-Instanz bereit
Verwendung der NUITKA-Utilities-Hinweis-Kompilierung zum einfachen Erstellen einer ausführbaren Datei aus einem Python-Skript
So rufen Sie eine Funktion auf
Laden Sie eine Datei in Dropbox hoch
Wie man ein Terminal hackt
So setzen Sie einen Hyperlink zu "file: // hogehoge" mit sphinx-> pdf
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
So importieren Sie Dateien in Python an eine beliebige Stelle
So generieren Sie einen öffentlichen Schlüssel aus einem privaten SSH-Schlüssel
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist
So verwenden Sie eine andere Datei als .fabricrc als Konfigurationsdatei
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
So erstellen Sie eine ISO-Datei (CD-Image) unter Linux
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
Wie erstelle ich eine japanisch-englische Übersetzung?
Ich habe versucht, eine Python-Datei in eine EXE-Datei zu verwandeln (Rekursionsfehler unterstützt)
So setzen Sie einen symbolischen Link
Wie man einen lockeren Bot macht
So erstellen Sie ein Conda-Paket
Schreiben Sie die Standardausgabe in eine Datei
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
So erstellen Sie eine virtuelle Brücke
So kombinieren Sie alle CSVs in einem Ordner zu einer CSV
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
[Django] Lesen von Variablen / Konstanten, die in einer externen Datei definiert sind
[Python] Speichern einer CSV-Datei als eindimensionale Array-Daten
Wie erstelle ich eine Docker-Datei?
[Blender] So erstellen Sie ein Blender-Plug-In
Konvertieren Sie eine Zeichenfolge in ein Bild
So löschen Sie einen Docker-Container
So erstellen Sie mit Faker eine CSV-Dummy-Datei mit Japanisch
So bekommen Sie einen Ingenieur aus Ihren 30ern
Wie erstelle ich einen Crawler?
[ROS2] So spielen Sie eine Bag-Datei mit Start im Python-Format ab
Wie man schlechten Code mit Python-Refactoring in normalen Code verwandelt, der kein schönes objektorientiertes Design ist
"Cython" -Tutorial, um Python explosiv zu machen: So analysieren Sie die in C ++ - Code definierte Enum-Klasse mit Enum in Python.
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
[Python] Lesen der CSV-Datei (Methode read_csv des Pandas-Moduls)
Verwenden Sie BeautifulSoup, um einen Link mit einer Zeichenfolge aus einer HTML-Datei zu extrahieren