Meine Bewerbung sieht folgendermaßen aus:
main.py. Windows / __init__.py mainwindow.py ... Modell/ __init__.py orders.py ... Ressourcen/ image1.png logo.jpg ...
Das Programm wird mit main.py gestartet. Gibt es eine gute Möglichkeit, daraus eine "endgültige" Anwendung zu erstellen? Ich denke an etwas wie py2exe / py2app, aber ohne den Python-Interpreter / die Python-Module in die Anwendung zu kopieren, in der nur eine ausführbare Datei vorhanden ist.
Ich habe mir distutils angesehen, aber es sieht so aus, als würde ein Programm im Python-Verzeichnis installiert, was auf Nicht-Linux-Plattformen nicht üblich ist.
Im Moment kopiere ich einfach den gesamten Quellordner auf den Zielcomputer und erstelle einen Alias für main.pyw
Windows. Einige Unannehmlichkeiten:
- Das Symbol ist das Standard-Python-Symbol.
- Ich muss den Alias manuell erstellen.
- In meinem Quellverzeichnis befinden sich viele zusätzliche Dateien wie der Quellcodeverwaltungsordner.
- Ich muss umbenannt werden,
main.py
ummain.pyw
manuell. - Es wäre schön, wenn sich nur `.pyo * -Dateien auf dem Zielcomputer befinden würden. Es gibt keinen wirklichen Grund dafür, ich mag es einfach nicht, unnötige Dateien zu haben.
Wie schafft man eine schöne automatisierte Distribution?
- für Windows? (Das ist die einzige Plattform, die ich momentan unterstützen muss.)
- für Mac?
- für Linux?
Antworten:
Die normale Art, Python-Anwendungen zu verteilen, ist distutils . Es wurde sowohl für die Verteilung von Python-Modulen vom Bibliothekstyp als auch für Python-Anwendungen entwickelt, obwohl ich nicht weiß, wie es unter Windows funktioniert. Unter Windows müssten Sie Python auf jeden Fall separat installieren, wenn Sie distutils verwenden.
Ich würde wahrscheinlich empfehlen, dass Sie es mit Disutils für Linux und Py2exe oder ähnlichem für Windows verteilen. Für OS XI weiß ich nicht. Wenn es sich um eine Endbenutzeranwendung handelt, möchten Sie wahrscheinlich eine Art Disk-Image. Ich weiß nicht, wie das geht. Lesen Sie diesen Beitrag, um weitere Informationen zur Benutzererfahrung zu erhalten. Für eine Anwendung, die für Programmierer erstellt wurde, ist eine Installation unter distutils wahrscheinlich auch unter OS X in Ordnung.
quelle
dist
und alle relevanten Dateien in dieses zu kopieren?Ich kann Pyinstaller nur empfehlen , das alle wichtigen Plattformen nahtlos unterstützt. Wie py2exe und py2app erstellt es unter Windows eine ausführbare Standarddatei und unter OS X ein App-Bundle, hat jedoch den Vorteil, dass auch häufig auftretende Abhängigkeiten automatisch aufgelöst und ohne zusätzliche Konfigurationsänderungen eingeschlossen werden.
Beachten Sie außerdem, dass Sie diesen Patch auf Pyinstaller-Trunk anwenden sollten, wenn Sie Python 2.6 unter Windows bereitstellen.
Sie haben angegeben, dass Sie kein Installationsprogramm benötigen, aber Inno Setup ist eine einfach zu verwendende und schnell einzurichtende Option für die Windows-Plattform.
quelle
Hello world
Programm 500 MB Speicherplatz und eine Initialisierungszeit von 3-5 Sekunden benötigt.Fredrik Lundhs
squeeze.py
kann eine einzelne Datei erstellen, die nicht den Python-Interpreter enthält, sondern Bytecode. Mit den richtigen Argumenten können Sie andere Dateien, Module usw. in die Ergebnisdatei aufnehmen. Ich habe es erfolgreich in einem Projekt verwendet. Das resultierende Programm lief problemlos unter OS X, Linux und Windows!PS : Jeder Computer benötigt einen Python-Interpreter, der mit dem von Squeeze.py generierten Bytecode kompatibel ist. Sie können bei Bedarf verschiedene Bytecode-Versionen für verschiedene Versionen von Python generieren (führen Sie einfach squeeze.py mit der richtigen Version von Python aus).
quelle
Ich denke, es ist auch erwähnenswert, PEX zu erwähnen (wenn man mehr die Aufmerksamkeit berücksichtigt, die diese Frage erhalten hat, und weniger die Frage selbst). Nach eigener Beschreibung :
Ich bin darauf gestoßen, als ich eine Übersicht über die Verpackung von Python gelesen habe . Sie haben dieses schöne Bild dort gepostet:
Zusammenfassend: Wenn Sie es sich leisten können, sich auf die Installation von Python auf dem Zielcomputer zu verlassen, verwenden Sie PEX, um eine eigenständige »ausführbare Datei« zu erstellen, die wahrscheinlich eine geringere Dateigröße aufweist als beispielsweise eine von PyInstaller erstellte ausführbare Datei.
quelle
Ich kann mich irren, aber hat IronPython keinen eingebauten Compiler für Windows?
http://www.ironpython.net
[BEARBEITEN]
Probieren Sie Cx_Freeze aus, den mit Abstand besten .py to .exe-Compiler (plus ein paar .dlls), den ich je verwendet habe.
http://cx-freeze.sourceforge.net/
quelle
Wenn Sie unter Windows verteilen, installieren Sie mit einem Installationsprogramm alle relevanten Dateien / Interpeter, die benötigt werden. Verteilen Sie eine setup.exe. Das ist der beste Weg unter Windows. Andernfalls werden sich Benutzer beschweren.
quelle
Die bequemste * plattformübergreifende Methode zum Verteilen von Python-Desktopanwendungen besteht darin, sich auf den plattformübergreifenden Conda-Paketmanager zu verlassen. Es gibt verschiedene Tools, die es verwenden:
* Am bequemsten für den Entwickler. Genug praktisch für den Endbenutzer.
quelle