Verringerung der Größe von pyinstaller exe
Habe ich eine einfache pandas pyinstaller exe-Datei, die ist über 40MB.
Meine exe-Beispiel:
import collections
import csv
import selenium
import pandas
print('hi')
40MB+ für diese scheint ein wenig übertrieben.
Wie kann ich reduzieren, so viel wie möglich?
Einer Methode:
pyinstaller --onefile --exclude matplotlib --exclude scipy --exclude pandas --exclude numpy.py
Dies ist jedoch nicht praktikabel, wenn man bedenkt, wie groß die Ausschluss-Liste wäre.
Wie wähle ich einen Ordner für pyinstaller um Module aus und schließen alles andere, so kann ich eine kleine Anwendung?
Spec-Datei:
a = Analysis(['123.py'],
pathex=['C:\\Users\\AA\\ZZ'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='123',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
Es ist auch Wert das erwähnen. Standardmäßig Pyinstaller nicht erkennen pandas.
Hinzufügen:
hiddenimports = ['pandas._libs.tslibs.timedeltas']
To: C:\Users\<NAME>\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks
Einer möglichen Lösung, wenn mehrere ausführbare Dateien, werden könnte, für jede ausführbare Datei in einen separaten Ordner oder eine ausführbare Datei mit allen Einfuhren.
- Wenn Sie entfernen Sie die Abhängigkeiten, die exe ist nicht in der Lage sein, führen Sie Ihr Skript, oder bin ich etwas fehlt?
- Pyinstaller ist Verpackung andere Sachen, die nicht benötigt werden. Auch, 40 MB für die exe? Ich versuchte, UPX, aber es ist nicht zu ändern viel für mich. Muss tun es falsch.
- Wenn ich
pyinstaller --onefile test.py
(test.py enthält dein Beispiel), ich bekomme eine ausführbare Datei, die ist über 5 MB. - Versuchen Sie es mit der --onedir-option anstelle von --onefile, und sehen, was pyinstaller ist dabei, in den dist-Ordner.
InformationsquelleAutor | 2017-12-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie, Ihre Umwelt mit einem virtualenv, und installieren Sie dort nur die benötigten Bibliotheken
einige details über das arbeiten mit virtual env sind hier: https://virtualenv.pypa.io/en/stable/
os
,pandas
,sqlalchemy
.Fühle ich mich wie diese beiden Antworten sind ausgezeichnet.
Für mich, es ist ein einfacher Fall mit pandas, dass die exe-Datei ist riesig.
Obwohl das entfernen bestimmter Verzeichnisse hilfreich war, als wurde UPXING das sehr geholfen auch.
Habe ich es reduziert eine Menge und es war nicht so standardmäßig.
Dass gesagt wird, die Letzte und wichtigste Lösung ist hier die Rede: Import der Python-Module, die von einer select-Lage . So gab es eine Funktion, die all dies Tat, aber für jetzt gibt es einige manuelle Behandlung miteinbezogen, weil: multipackage-bundles ist gebrochen.
Nun die einfache Lösung für viele exe ' s
Wenn Sie viele Dateien, ich empfehle diese Vorgehensweise:
Nun setzen abd.exe in dem einen Verzeichnis abc.py Ordner sowie alle anderen externen Skripts. Werden Sie sicher, dass Sie anders benannt sind oder nur ein Skript ausgeführt wird.
Das funktioniert wirklich gut, weil alle Abhängigkeiten sind in einem Ordner. Dies ist, wie es sein sollte. Also in diesem Beispiel sagen Sie, dass Sie hatte eine 40mb einen Ordner. Für jede weitere exe-danach wird es nur +5 MB(oder wie groß die exe ist) eher als 40mb jeder.
Den python-interpreter und alle importierten Module in der ausführbaren Datei enthalten.
Können Sie versuchen, hinzufügen von Modulen, die Sie ausschließen möchten, um die
excludes
Liste unterAnalysis
in Ihre spec-Datei.Könnte man auch versuchen, komprimieren Sie die ausführbare Datei mit UPX. Sehen Ein Hinweis auf mit UPX