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