2017-12-12 4 views
0

schrieb ich ein kurzes Programm main.py mit numpy und Qt:Größe Executable mit pyinstaller und numpy

from PyQt5 import QtWidgets 
import numpy as np 
import sys 

if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    w = QtWidgets.QTextEdit('hello') 
    w.show() 
    sys.exit(app.exec_()) 

Wenn ich pyinstaller --windowed main.py verwende die resultierenden dist Ordner mit einer Größe von 390MB hat.

Wenn ich import numpy as np entferne der resultierende dist Ordner ist nur 70 MB.

Gibt es eine Möglichkeit, die Größe zu reduzieren, während noch numpy verwendet wird? Vielleicht nur mit der dlls, die ich wirklich benutze?

+1

Grundsätzlich sogar die einfachsten Funktionen in numpy sind auf einigen BLAS-Bibliothek basiert (und etwas komplexer: LAPACK). Diese sind riesig und einige (MKL) sogar größer als andere (OpenBLAS). – sascha

+0

Also keine Chance, die Größe der ausführbaren Datei zu verringern und eigenständig zu halten? – Jonas

Antwort

0

Haben Sie versucht, Module auszuschließen? Dies ist ein häufiges Problem. Auch möchten Sie vielleicht prüfen:

Reducing size of pyinstaller exe

Erwähnenswert sind Sie Anaconda verwenden? Ein frisches Orakel-Box-Python-System und weniger von einer riesigen Datei.

Ich glaube in Docs irgendwo können Sie einstellen, wo die Verzeichnisse gefunden werden.

https://pythonhosted.org/PyInstaller/spec-files.html

+0

Wenn ich Module ausschließe, ist die ausführbare Datei nicht mehr eigenständig, kann ich die Teile von zB numpy ausschließen, die ich nicht verwende? – Jonas

+0

@Jonas Sie können Module sicher ausschließen, aber Sie können Teile von numpy nicht ausschließen. Vielleicht könnten Sie theoretisch ... nein, das würde numpig brechen. Gemäß dem Post, den ich verlinkt habe, sind UPX und virtuelle Umgebung und Ausschluss die allgemeinen Methoden, um die Größe zu reduzieren. –