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.
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()
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)
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)
Recommended Posts