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.
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.
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.)
--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:
$ pipenv install pyinstaller
#In einer nicht virtuellen Umgebung
$ pip install pyinstaller
--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.
Erstellen Sie eine einfache .py-Datei und experimentieren Sie. Die Umgebung ist die gleiche wie oben.
Experimentelles Muster
'normal': exe-Konvertierung ohne Gruppierung von Dateien
'onefile': Sammle Dateien in exe
Verwendete Datei
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.
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