Vergleich der ausführbaren Python-Dateikonvertierungsbibliothek (py2exe, cx_freeze, pyinstaller)

Einführung

Es gibt mehrere Bibliotheken, die mit Python in ein ausführbares Format konvertiert werden können, aber ich wusste nicht, welche ich verwenden sollte, also habe ich sie alle zusammen ausprobiert.

Der diesmal verwendete Code lautet https://github.com/nabehide/tryFreezing Ist in

Die folgenden drei Bibliotheken werden verglichen.

Umgebung

Python-Umgebung

Verifizierungs-Schlüssel

Angenommen, Sie möchten den folgenden Beispielcode (main.py) in ein ausführbares Format konvertieren.

main.py


import sys
from PyQt4 import QtGui  # , QtCore
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure


class UI(QtGui.QWidget):

    def __init__(self):
        super(UI, self).__init__()
        self.initUI()
        self.drawFigure()

    def initUI(self):
        # window setting
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle('Window title')

        # figure setting
        self.fig = Figure()
        self.canvas = FigureCanvas(self.fig)
        self.axes = self.fig.add_subplot(111)
        layoutFigure = QtGui.QGridLayout()
        layoutFigure.addWidget(self.canvas, 0, 0)

        self.setLayout(layoutFigure)

    def drawFigure(self):
        x = range(100)
        y = range(100)
        self.axes.plot(x, y)
        self.canvas.draw()


def main():
    app = QtGui.QApplication(sys.argv)
    ui = UI()
    ui.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Ergebnis

PyInstaller konnte nicht mit 3.2 ausgeführt werden https://github.com/pyinstaller/pyinstaller/issues/2086 Ich habe 3.3 unter Bezugnahme auf

$ pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

Das Folgende wird als Indikatoren verglichen, die ich persönlich hervorhole.

py2exe PyInstaller cx_Freeze
version 0.6.9 3.3.dev0+483c819 4.3.4
file size[MB] 43.5 81.5 44.7
execution time[sec] 15 49 8
startup time[sec] 1 5 1

Pyinstaller (3.3) ist groß und zeitaufwändig, scheint aber stabil zu sein. Alle Bibliotheken können beim Konvertieren des Ausführungsformats auf verschiedene Arten festgelegt werden, sodass Raum für Verbesserungen zu bestehen scheint.

(Es gibt auch Artikel, der die Python-Umgebung geändert und die geringe Größe und Geschwindigkeit in Frage gestellt hat)

Behobener Fehler

cx_Freeze

cx_Freeze.freezer.ConfigError: no file named sys (for module collections.sys)

"Collection.abc" wurde zur Ausschlussoption hinzugefügt, wie in [collection.sys error] gezeigt (https://bitbucket.org/anthony_tuininga/cx_freeze/issues/127/collectionssys-error). Klicken Sie hier für ein Beispielskript (https://github.com/nabehide/tryFreezing/blob/master/PyQt4/setup_cx_Freeze.py).

Andere Dinge, die ich überprüfen möchte

Recommended Posts

Vergleich der ausführbaren Python-Dateikonvertierungsbibliothek (py2exe, cx_freeze, pyinstaller)
Vergleich der Konvertierungsmodule für ausführbare Python-Dateien 2
GUI (WxPython) Ausführungsdatei (pyInstaller) [Windows] in Python3
Vergleich japanischer Konvertierungsmodule in Python3
Zusammenfassung des Bibliotheksvergleichs zum Generieren von PDF mit Python
Aufzeichnen, wann eine ausführbare Datei aus Python-Code mit pyinstaller auf einem Mac generiert wird (OSError: Python-Bibliothek nicht gefunden: Vermeiden Sie libpython3.7m.dylib, .Python, libpython3.7.dylib)