Im Nachgang zu den Problemen https://github.com/cool-RR/PythonTurtle/pull/105#issuecomment -421965482, #106 und #90 würde ich gerne anfangen, Informationen darüber zu sammeln, wie man (am besten) Verpackungen für alle macht Plattformen, auf denen PythonTurtle läuft. Wenn wir wissen, wie man die Verpackung manuell durchführt, wird es eine einfache Aufgabe sein, alles zu automatisieren.
Mit anderen Worten, wir brauchen
HINWEIS: Wenn sich das Aufschreiben in dieser Ausgabe als unbequem erweist, möchten wir vielleicht das Projekt-Wiki verwenden , um uns weiterzuentwickeln.
Wir scheinen derzeit py2exe und py2app für Windows und macOS zu verwenden.
Laut einem kürzlichen Vortrag bei PyCon Otto sollten wir auf PyInstaller umsteigen , der es ermöglicht, eigenständige ausführbare Dateien für Windows, macOS und GNU/Linux gleichermaßen zu
Ich stimme zu, dass wir auf jeden Fall PyInstaller anstelle von py2exe und py2app verwenden sollten.
Und ich stimme zu, dass wir einen zuverlässigen und automatischen Build-Prozess brauchen.
Wir sollten auch nicht vergessen, das PythonTurtle- Python-Paket zu erstellen und es bei der Veröffentlichung auf PyPI zu übertragen.
Ich würde auch vorschlagen, Releases auszulösen, indem ein Git-Tag (mit der Versionsnummer) an das GitHub-Repository gesendet wird. Die Installer können dann über die Release-Seite heruntergeladen werden. Ich hoffe, das ist alles reibungslos möglich.
Ich stimme zu, obwohl diese Art der Automatisierung ein ziemlich hohes Ziel ist, wenn wir überhaupt an den Punkt kommen, an dem wir eine Veröffentlichung machen könnten, wäre ich begeistert.
Wenn wir überhaupt an den Punkt kommen, an dem wir eine Veröffentlichung machen könnten, wäre ich begeistert.
Dann bereiten Sie Ihren Raumanzug vor! :Lächeln:
Wie vermutet, muss PyInstaller auf der Infrastruktur laufen, für die das Installationsprogramm erstellt werden soll (zB unter Windows für ein Windows-Installationsprogramm, auf einem Mac für ein macOS-Installationsprogramm).
Ich habe weder ein Windows noch einen Mac. Daher muss ich umständlich herausfinden, wie das Erstellen auf AppVeyor erfolgt. Außerdem benötigen wir ein macOS mit installiertem Python 3 (und drücken Sie die Daumen, dass die Dokumentation nur veraltet ist und wir auch mit Python 3 bauen können).
Ich werde wahrscheinlich am besten damit beginnen, ein Python-Paket zu automatisieren (und es automatisch auf PyPI hochzuladen). IIUC wird sowieso ein setup.py
zum Bauen mit (einigen Funktionen von) PyInstaller benötigt.
Auf diese Weise haben wir bereits eine Möglichkeit, PythonTurtle zu installieren.
Möchten Sie mich als Betreuer zum PyPI-Projekt hinzufügen ? Würde es mir erleichtern, Dinge zu automatisieren, wenn ich meine eigenen Anmeldeinformationen verwenden kann. Mein Benutzername ist "bittner", nicht überraschend.
Ich habe Sie als Betreuer auf PyPI hinzugefügt.
In Bezug auf PyInstaller frage ich mich, ob eine VM mit ReactOS zum Generieren eines Windows-Installers funktionieren würde.
Um pip install PythonTurtle
das Programm und alle benötigten Abhängigkeiten zu installieren, erweist sich als schwierig:
Schlussfolgerungen:
install_requires=['wxPython']
zu setup()
hinzufügen, aber dies würde fehlschlagen, es sei denn, die Voraussetzungen ( in der README erwähnt ) wären bereits installiert. Möglicherweise können wir den - sehr technischen Fehler - beheben und einen hilfreichen Hinweis drucken, falls die Installation fehlschlägt.wx
Modul nicht importiert werden kann ( ModuleNotFoundError
im Anwendungsmodul ).Es wäre möglich, aber auch ziemlich umständlich, entweder auf eine benutzerfreundliche Weise "Voraussetzungen automatisch erkennen" mit platform.release()
und/oder os.name
zu tun. Ich schlage vor, wir drucken einfach eine Textnachricht und verweisen mit einer URL auf den Installationsabschnitt der README.
Ich frage mich, ob eine VM mit ReactOS zum Generieren eines Windows-Installers funktionieren würde.
Ich bin mir nicht sicher, wie wir eine VM für einen Dienst in der Cloud verwenden würden, der das PythonTurtle-Paket automatisiert erstellt. Können Sie das näher erläutern? (Beabsichtigen Sie nur die lokale Verwendung auf einem Entwicklercomputer?)
Du hast recht, ich habe das nicht zu Ende gedacht.
Ich denke, es gibt 2 Fragen:
Könnte ReactOS zum Generieren eines Windows-Installers mit PyInstaller funktionieren?
Könnten wir es so einrichten, dass es automatisch in der Cloud funktioniert?
Nehmen wir an, die Antwort auf die erste Frage lautet ja, und es gibt keinen SaaS-Anbieter, der diesen Service anbietet. Dann sagen wir, wir können ein Docker-Image einrichten, das VirtualBox mit einem ReactOS-Gast ausführt. Vielleicht finden wir einen SaaS-Anbieter, der dieses Docker-Image für uns ausführt?
https://github.com/pypa/python-packaging-user-guide/issues/267 enthält einige interessante Links zum Verpacken von Python-Anwendungen.
Sobald das Hochladen des Linux-Bundles auf GitHub abgeschlossen ist (über PR #123), steigen wir auf den CI-Zug für macOS auf , ja! :lecker:
Die nächste großartige Sache, nachdem Sie EXE für Windows und Bundles für macOS erhalten haben, könnte das Erstellen eines AppImage für Linux sein. Dies ähnelt einer .dmg-Datei auf einem Mac. Es wäre eine einzige Lösung für alle GNU/Linux-Distributionen! :tada: :smiley:
AppImage hat auch (etwas) einen AppStore, genannt AppImageHub . Und der Vergleich macht einem klar, dass es wirklich eine coole Sache ist. :+1:
Klingt gut für mich!
Derzeit funktioniert das Erstellen eines Anwendungspakets auf macOS (mit PyInstaller) nicht vollständig. Als Alternative, dachte ich, könnten wir eine Homebrew-Formel erstellen. Ich schaue mir gerade die zugehörige Dokumentation an:
Hmmm, es sieht so aus, als ob jemand mit einem Mac benötigt wird, um die Formel effektiv zu entwickeln. Obwohl es wirklich nicht schwierig zu sein scheint. :Denken:
Hier sind Formeln im Zusammenhang mit Python (3):
Es kann ausreichen, sich auf Python@3
(=3.7) zu verlassen und wxPython über pip zu installieren ( wie in unseren Tests ).
Nur als Referenz, wenn die automatischen Veröffentlichungen nicht funktionieren (sie werden wahrscheinlich derzeit nicht funktionieren, da api_key:
nur auf einen Beispielwert gesetzt ist ), so führt das VSCodium-Projekt automatische Veröffentlichungen auf GitHub durch. :+1:
Ram, Sie haben erwähnt, dass "Windows Installer" die oberste Priorität der Gegenwart ist. Ich stimme zu.
Notieren wir uns den aktuellen Stand der Gewerkschaft.
Ich glaube, ich habe alles vorbereitet. Da ich jetzt weder einen Windows-Rechner habe noch vorhabe, einen zu kaufen (übrigens auch für macOS), fehlt nur noch jemand, der übernimmt und das fehlende Puzzleteil an Ort und Stelle setzt. Aus meinem Bauchgefühl sind wir wirklich sehr nah dran an der "Aufgabe erledigt".
Es sieht so aus, als ob Sie laut einer Antwort auf StackOverflow nur die erforderliche Konfiguration mit der Microsoft Visual Studio Installer Projects- Erweiterung erstellen müssen.
Können Sie also übernehmen? Was getan werden muss, IIUC, ist:
.vdproj
zu diesem Projekt hinzuAppVeyor erkennt dann diese Datei, erstellt das Installationsprogramm und stellt es auf der Seite Build- Artefakte zum Download bereit.
Aus meinem Bauchgefühl sind wir wirklich sehr nah dran an der "Aufgabe erledigt".
Ich habe nicht das Gefühl, dass wenn ich damit anfange, es fast fertig sein wird. Ich weiß nicht einmal, wie man Visual Studio Project verwendet oder was unser aktueller Plan ist. Wenn ich diese Aufgabe übernehmen würde, würde ich davon ausgehen, dass es ein paar Tage Vollzeitarbeit dauern würde.
Sie haben sich viel Mühe gegeben, deshalb finde ich es nicht gut, Ihnen dies zu sagen, aber ich werde mich definitiv nicht freiwillig melden, um an diesem Thema zu arbeiten. PythonTurtle ist gerade nicht annähernd eine Priorität in meinem Leben, da ich mehr als eine Stunde damit verbringen würde, es zu verbessern.
Nervt es mich, wenn ich von anderen Ausgaben auf dieses Problem weise und sage, dass nichts ohne dieses Problem etwas wert ist? Ich werde Sie nicht daran hindern, an anderen Themen zu arbeiten, ich würde wahrscheinlich nur nicht mitmachen, weil mir diese Mühe verschwendet erscheint, aber ich werde Sie nicht blockieren, und wenn Sie mich für Code-Reviews oder kleine Dinge brauchen, Das mache ich gerne.
Habe noch einen Gedanken dazu. Sie sagen: "Ich habe weder einen Windows-Computer noch beabsichtige ich, einen zu kaufen". Wenn Ihr Einwand gegen die von Ihnen aufgeführten Punkte darin besteht, dass Sie genug für dieses Ticket getan haben oder dass Sie es vorziehen, Ihre Zeit nicht mit Windows-bezogenen Dingen zu verbringen, dann ja, das ist ein berechtigter Einwand.
Wenn das Problem darin besteht, dass Sie kein Geld für eine Windows-Lizenz ausgeben möchten, ist dies möglicherweise lösbar. Eine Idee wäre, ReactOS zu verwenden und zu sehen, ob damit Visual Studio Project ausgeführt wird. Wenn ReactOS keine Option ist, könnte ich Ihnen vielleicht eine Windows-Lizenz/-Maschine besorgen. Lass es mich wissen, wenn das hilfreich ist.
Lass es mich wissen, wenn das hilfreich ist.
Kennen Sie jemanden, der _begeistert_ für die Programmierung unter Windows ist? Windows ist eine unordentliche Umgebung für Python. Ich möchte nicht zu einem falschen Image beitragen, dass "Python + Windows" gut zusammenpasst, das ist alles.
Siehe https://github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment -683420022 für alternative Lösungen zum Erstellen eines MSI-Installationsprogramms (WiX, WiX.Py ). In Kombination mit GitHub Actions können wir so erfolgreich sein. Will das jemand ausprobieren?
Will das jemand ausprobieren?
Ich nicht, also werden wir wohl warten, bis ein möglicher Freiwilliger eintrifft.
Eine Aufgabenliste...
Ein paar Hinweise, die Ihnen helfen, Fortschritte zu machen:
python3 setup.py clean bundle
Sie alle Binärpakete erstellen (PyInstaller wird verwendet).master
; wir möchten vielleicht so etwas wie Aktionen/Erstellen-Freigeben verwenden , um dies für uns weniger mühsam zu machen.Wir haben eine super-nette Antwort von @judej auf der Microsoft Developer Community Bitte um Hilfe , dass ich geschrieben hatte! :Freude:
Fazit: Kein MSI-Volontär für uns, aber es gibt zwei weitere interessante Projekte, eines, das einen Installer erstellt und das andere, das eine Python-ZIP-App erstellt :
Das könnten zwei schöne Alternativen sein, die es wert sind, bewertet zu werden. Danke Jude! :100: :medal_military:
Cool. Ich habe vor kurzem auch von PyOxidizer gehört . Ich bin mir immer noch nicht 100% sicher, ob ich das Projekt verstanden habe ( Diskussion ), aber es ist möglich, dass es das tut, was wir wollen.
Ich werde das am Wochenende mit shiv
versuchen. Bitte versuchen Sie es mit PyOxidizer
und dann können wir die Noten vergleichen.
Entschuldigung, ich habe vor ein paar Tagen einen neuen Job angefangen und werde keine Zeit haben, etwas zu tun :(
PyOxidizer
klingt für mich wie ein Experiment: Eine Python-Anwendung, die auf "einer Rust-VM" ausgeführt wird, einer OS-nativen Ebene, die mit Rust erstellt wurde. Ich bin mir nicht sicher, welchen Vorteil das bietet. Macht das PyInstaller
Setup, das wir ausführen, nicht alles gut? :3rd_place_medal:
shiv
ist ein völlig neuer Ansatz (neu in unserem "Portfolio" von Veröffentlichungsartefakten), der für unser Publikum interessant sein könnte. Ich finde die Idee spannend (auch wenn ich wetten würde, dass nur wenige Leute sie verwenden). :2nd_place_medal:
pynsist
klingt wie das Microsoft Windows-Installationsprogramm, nach dem wir suchen. Dies könnte die Benutzererfahrung bieten, die Windows-Leute zu erwarten scheinen: :eins: Installer herunterladen, :zwei: es ausführen, um es zu installieren und einen Startmenüeintrag hinzuzufügen, :drei: Anwendung aus dem Startmenü starten. :1st_place_medal:
Nachteil von pynsist ist nur Windows. Ich werde versuchen, Shiv (von LinkedIn) auf Mac und Linux voranzubringen.
Hilfreichster Kommentar
Die nächste großartige Sache, nachdem Sie EXE für Windows und Bundles für macOS erhalten haben, könnte das Erstellen eines AppImage für Linux sein. Dies ähnelt einer .dmg-Datei auf einem Mac. Es wäre eine einzige Lösung für alle GNU/Linux-Distributionen! :tada: :smiley:
AppImage hat auch (etwas) einen AppStore, genannt AppImageHub . Und der Vergleich macht einem klar, dass es wirklich eine coole Sache ist. :+1: