Comparaison des bibliothèques de conversion de fichiers exécutables python (py2exe, cx_freeze, pyinstaller)

introduction

Il existe plusieurs bibliothèques qui peuvent être converties au format exécutable avec python, mais je ne savais pas laquelle utiliser après tout, alors je les ai toutes essayées ensemble.

Le code utilisé cette fois est https://github.com/nabehide/tryFreezing Est dans

Les trois bibliothèques suivantes sont comparées.

environnement

Environnement Python

code de vérification

Supposons que vous souhaitiez convertir l'exemple de code suivant (main.py) en un format exécutable.

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()

résultat

PyInstaller n'a pas pu fonctionner avec 3.2 https://github.com/pyinstaller/pyinstaller/issues/2086 J'ai mis 3,3 en faisant référence à

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

Les éléments suivants sont comparés comme des indicateurs sur lesquels je souligne personnellement.

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) est volumineux et prend du temps, mais il semble stable. Toutes les bibliothèques peuvent être définies de différentes manières lors de la conversion du format d'exécution, il semble donc y avoir place à l'amélioration.

(Il y a aussi Article qui a changé l'environnement Python et a contesté la petite taille et la vitesse)

Erreur résolue

cx_Freeze

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

Ajout de "collection.abc" aux options d'exclusion comme dans erreur collections.sys Cliquez ici pour un exemple de script (https://github.com/nabehide/tryFreezing/blob/master/PyQt4/setup_cx_Freeze.py)

Autres choses que je souhaite vérifier

Recommended Posts

Comparaison des bibliothèques de conversion de fichiers exécutables python (py2exe, cx_freeze, pyinstaller)
comparaison du module de conversion de fichier exécutable python 2
Fichier d'exécution GUI (WxPython) (pyInstaller) [Windows] dans Python3
Comparaison des modules de conversion japonais en Python3
Résumé de la comparaison des bibliothèques pour générer des PDF avec Python
Enregistrer lorsqu'un fichier exécutable est généré à partir de code Python à l'aide de pyinstaller sur Mac (OSError: bibliothèque Python introuvable: évitez libpython3.7m.dylib, .Python, libpython3.7.dylib)