PyPi-GUI (war: Projektaufteilung: libs/module)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@jens:
Ich spinn jetzt einfach mal - das Problem mit nativem Code wäre mit einem Distributionsservice mit Anbindung an einen CI-Server, welcher die gängigen Plattformen abdeckt und die binaries mit dem Einchecken kompiliert, lösbar. Eine Art Appstore für PyPi. Zusammen mit einem Schweitzer-Taschenmesser-(GUI)-pip wäre hierüber sogar Python selbst auslieferbar und könnte als eigenes Installationspaket entfallen. :D
BlackJack

@Hellstorm: Natürlich *darfst* Du als Anwender Programme verwenden die nicht in der Paketverwaltung sind. Es verbietet ja niemand. Die Frage ist ob der Anwender das *kann* wenn dafür Kenntnisse nötig sind die er nicht hat und sich auch nicht aneignen kann oder will. Du ziehst diese ganze Sachen von der falschen Seite auf. Die Programmierer schreiben ja keine englischsprachigen READMEs und paketieren nicht für x Distributionen weil sie ”unwürdigen” Anwendern ihr Programm verwehren wollten. Das ist schlicht eine Frage der Zeit und des Aufwandes. Als Programmierer schaut man doch als erstes mal wie man mit möglichst wenig Einsatz das Meiste erreicht. Und da ist nun mal eine sinnvolle Strategie mit Englisch anzufangen und das für andere Programmierer weltweit einfach nutzbar zu machen. Das erhöht die Chance, dass das Programm genutzt wird und damit die Chance, dass sich auch Übersetzer finden und am Ende auch Maintainer für Pakete für die verschiedenen Distributionen.

Das Beispiel ist witzig, denn da steht auf Englisch beschrieben wie man es installiert und das man sich bei Windows eventuell .NET von Microsoft herunterladen und installieren muss als Abhängigkeit. Und bevor man es herunterladen kann muss man einer englischsprachigen EULA zustimmen. ;-) Ist die Anwendung selbst dann wenigstens lokalisiert, oder muss der Benutzer da auch mit Englisch in der Oberfläche klar kommen?

Und speziell dieses Beispiel kann man wohl sogar auf Linux verwenden, denn es wird auch eine Java-Version angeboten. Die natürlich voraussetzt das man eine JRE installiert hat. Steht da. In Englisch.

In den Paketverwaltungen der Distributionen finden sich ein Haufen Programme die sehr speziell sind. Das ist eher eine Frage ob das Projekt Maintainer für die Pakete hat, und weniger wie speziell das Programm ist.

Und wenn ein Programm nicht in der Paketverwaltung ist und ein Anwender es benutzen möchte, ja dann muss er in der Tat herausfinden wie man es installiert bekommt. Und wenn die README nur in Englisch vorliegt, dann muss er sie halt auch auf Englisch lesen. Auch wenn er das einfach nur *benutzen* will.

Dieses magische ein-Paket-geht-überall ist halt genau das: *Magie*. Solange Du nicht erklärst wie man das praktisch umsetzen kann, kannst Du so viel davon träumen wie Du magst, aber das gibt es halt nicht. Distributionen, Versionen davon, und verschiedene Hardwareplattformen machen das unmöglich. Man müsste das alles soweit zusammenstutzen wie das bei Windows der Fall ist, nur ist dann Linux für sehr viele Sachen nicht mehr geeignet und so nahe an Windows dran, dass man sich fragen muss warum überhaupt ein eigenes System. Und es gibt ja Windows, wer also diese ganzen kleinen nützlichen Programme haben möchte die es für Windows gibt, der installiert sich halt Windows und hat die alle.

APKs funktionieren nur unter Android, also letztlich nur eine Distribution, mit Java als Plattform, oder man bekommt wieder Pakete die nicht überall funktionieren, wobei ARM-Prozessoren sehr dominant sind, man also bei einem ARM-Binary welches nichts spezielles von spezifischen Prozessoren benutzt, fast immer noch von einer Plattform reden kann die man nur unterstützen muss. Super man kann also solche Pakete für eine Distribution auf einer fast komplett homogenen Plattform realisieren. Was für eine Meisterleistung. Dann muss das doch für x Distributionen auf y Plattformen in z Versionen auch problemlos gehen… Das da noch keiner dran gedacht hat… ;-)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

jens hat geschrieben:Ich hab es mal bei https://github.com/pypa/packaging-problems/issues/57 in den Raum geworfen...
Es gibt ein paar Anmerkungen dort.

Es wird auf einige existierende Tools verwiesen, u.a.:
* http://www.pyinstaller.org/
* http://cx-freeze.sourceforge.net/

PyInstaller und cx-freeze sind schon nicht schlecht (wohl py2exe vorzuziehen)...
Das Problem ist jedoch: Man kann nur jeweils auf einer Plattform den Installer für dieses Plattform erstellen. (Wobei man z.B. unter Linux auf Wine zurück greifen kann)

Aber so braucht man einen Windows, Linux und Mac System. Aber selbst wenn man das hätte: Man muß bei jedem neuen Release, auf jeder Plattform erneut das Paket schnüren... Also auch hier: Wesentlich mehr Aufwand.

Wenn es ein Funktionierendes PyPi-GUI geben würde, brauchen die Entwickler nur ./setup.py sdist upload machen. Egal ob sie nun Windows, Linux oder Mac nutzten.

Allerdings müßte man bei PyPi-GUI selbst auf Lösungen wie PyInstaller oder cx-freeze zurück greifen. (Wahrscheinlich würde ich cx-freeze nehmen, weil PyInstaller noch nicht mit Python 3 umgehen kann, was in Arbeit ist)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

BlackJack hat geschrieben:@Hellstorm: Natürlich *darfst* Du als Anwender Programme verwenden die nicht in der Paketverwaltung sind. Es verbietet ja niemand. Die Frage ist ob der Anwender das *kann* wenn dafür Kenntnisse nötig sind die er nicht hat und sich auch nicht aneignen kann oder will. Du ziehst diese ganze Sachen von der falschen Seite auf. Die Programmierer schreiben ja keine englischsprachigen READMEs und paketieren nicht für x Distributionen weil sie ”unwürdigen” Anwendern ihr Programm verwehren wollten. Das ist schlicht eine Frage der Zeit und des Aufwandes. Als Programmierer schaut man doch als erstes mal wie man mit möglichst wenig Einsatz das Meiste erreicht. Und da ist nun mal eine sinnvolle Strategie mit Englisch anzufangen und das für andere Programmierer weltweit einfach nutzbar zu machen. Das erhöht die Chance, dass das Programm genutzt wird und damit die Chance, dass sich auch Übersetzer finden und am Ende auch Maintainer für Pakete für die verschiedenen Distributionen.
Ich finde es nicht schlimm, dass die README in der Ursprungsfassung auf Englisch ist. Aber wieso wird die nicht genau so zur Übersetzung bereitgestellt wie das auch für die Bildschirmtexte selber der Fall ist? Wenn ich als Deutscher die Bedienoberfläche übersetze, kann ich doch auch genauso gut die Readme übersetzen. Die Anleitung selber wird doch auch installiert, wieso dann nicht auch die Installationsanleitung?

BlackJack hat geschrieben: Das Beispiel ist witzig, denn da steht auf Englisch beschrieben wie man es installiert und das man sich bei Windows eventuell .NET von Microsoft herunterladen und installieren muss als Abhängigkeit. Und bevor man es herunterladen kann muss man einer englischsprachigen EULA zustimmen. ;-) Ist die Anwendung selbst dann wenigstens lokalisiert, oder muss der Benutzer da auch mit Englisch in der Oberfläche klar kommen?
Die ist nur auf Englisch (glaube ich). Ich habe das nur als Beispiel genommen, weil es mir gerade eingefallen ist. Fast jeder der Japanisch kann, kann auch Englisch, von daher ist das nicht das Problem (Aber nicht jeder Computernutzer kann Englisch). Ich hatte das aber als Beispiel genommen, weil es eben ein Nischenprodukt ist. Ich sage auch nicht, dass das Programm und die Veröffentlichung des Programms der Weisheit letzter Schluss ist.
.NET ist doch mittlerweile sogar automatisch installiert bei Windows, oder nicht?
BlackJack hat geschrieben: Und speziell dieses Beispiel kann man wohl sogar auf Linux verwenden, denn es wird auch eine Java-Version angeboten. Die natürlich voraussetzt das man eine JRE installiert hat. Steht da. In Englisch.

In den Paketverwaltungen der Distributionen finden sich ein Haufen Programme die sehr speziell sind. Das ist eher eine Frage ob das Projekt Maintainer für die Pakete hat, und weniger wie speziell das Programm ist.
Speziell ist in deinem meisten Fall aber eher speziell im Informatikbereich. Und da finden sich dann auch einige Maintainer. Ist ja auch klar, die Maintainer sind auch Programmierer und haben dann eher Interesse an dem Programm. Bei anderen Programmen wäre das anders.
Ich mache auch nicht die Maintainer für das Problem verantwortlich. Sondern einfach das System an sich.

Übrigens gibt es da auch das ganz andere Problem mit proprietären Anwendungen. Die werden dann oft eben aus Lizenzgründen nicht in den normalen Paketquellen mitgeliefert. Skype oder Dropbox oder ähnliches bieten aber ein .deb-Paket an, was man einfach installieren kann. Sowas ist doch praktisch, oder nicht? Nur machen die sich auch zu Nutze, dass Ubuntu halbwegs weit verbreitet ist. Andere Distributionen schauen dann in die Röhre.
BlackJack hat geschrieben: Und wenn ein Programm nicht in der Paketverwaltung ist und ein Anwender es benutzen möchte, ja dann muss er in der Tat herausfinden wie man es installiert bekommt. Und wenn die README nur in Englisch vorliegt, dann muss er sie halt auch auf Englisch lesen. Auch wenn er das einfach nur *benutzen* will.
Du hast aber auf der vorherigen Seite noch gesagt, dass die READMEs für Programmierer sind. Da widersprichst du dir.
Du tust ebenso so, als ob das eine in Stein gemeißelte Vorgehensweise wäre. Und das finde ich merkwürdig.
BlackJack hat geschrieben: Dieses magische ein-Paket-geht-überall ist halt genau das: *Magie*. Solange Du nicht erklärst wie man das praktisch umsetzen kann, kannst Du so viel davon träumen wie Du magst, aber das gibt es halt nicht. Distributionen, Versionen davon, und verschiedene Hardwareplattformen machen das unmöglich. Man müsste das alles soweit zusammenstutzen wie das bei Windows der Fall ist, nur ist dann Linux für sehr viele Sachen nicht mehr geeignet und so nahe an Windows dran, dass man sich fragen muss warum überhaupt ein eigenes System. Und es gibt ja Windows, wer also diese ganzen kleinen nützlichen Programme haben möchte die es für Windows gibt, der installiert sich halt Windows und hat die alle.
Ein (sicherlich nicht zu Ende gedachter Vorschlag):

Es gibt eine Datenbank welche auflistet, welche Programme unter welcher Distribution in welchen Paketen liegen.
Beispielsweise:

PyQt5-Python3
Arch: extra/python-pyqt5
Debian: ... (kA, habe ich gerade nicht zur Verfügung).
...

Man würde beim Verpacken seines Programms dann eben nicht sagen, dass man python-pyqt5 haben möchte, sondern PyQt5-Python3, und erstellt dann ein Paket. Das wird unter jeder Distri dann mit dem entsprechenden Paketmanager geöffnet (Sinnvollerweise sind im Paket selber dann die Beschreibung auch schon übersetzt; ist es bei Android auch. Und am besten auch noch mit einigen Screenshots angereichert, wenn es eine GUI-Anwendung ist), und dieser Paketmanager schaut dann eben, welche Pakete unter CentOS 7 notwendig ist.
Das geht sicherlich nicht für alle Programme problemlos, aber ich denke für viele GUI-Endanwender-Programme sollte das schon möglich sein.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab es auch auf der Python ML geschrieben und Diez B. Roggisch hat ein paar gute Anmerkungen, siehe: https://mail.python.org/pipermail/pytho ... 03887.html

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@Hellstorm: Die englische README wird doch zur Übersetzung bereitgestellt. Die ist üblicherweise Bestandteil der Quelltexte. Niemand wird daran gehindert die zu übersetzen und einen Pull-Request für eine README.de, README.ru, … zu machen. Ein Problem was dabei natürlich auftauchen kann ist das der/die Maintainer den Pull-Request ablehnen. Zum Beispiel mit der Begründung das keiner von denen Russisch kann, sie also nicht wissen was in der README.ru drin steht, ob das faktisch korrekt ist, und wie sie reagieren sollen wenn Benutzer mit Fragen zu dem Text in der README.ru an sie heran treten, eventuell sogar welche die in Russisch gestellt werden.

Mag sein das die speziellen Programme in den Distributionen eher aus dem Informatikumfeld kommen, aber ich hatte auch schon mal ein Programm zum Berechnen von Segeln für Segelboote gesehen. Was sicher keine Massenanwendung ist und auch nicht besonders informatikbezogen. :-)

Skype und Dropbox DEB-Pakete mögen Dir praktisch erscheinen, die verletzen aber ganz massiv die Gepflogenheiten von Linux-Systemen. Wenn Du gerne alle Programme *so* hättest, dann willst Du eigentlich Linux abschaffen. Dropbox zum Beispiel liefert *alles* mit was es braucht, also inklusive einen eigenen Python-Interpreter (der zudem noch absichtlich inkompatibel mit dem Standardpython mit der gleichen Versionsnummer ist) und installiert das in einem versteckten Verzeichnis im Heimatverzeichnes des Benutzers. Und das ist auch nur solange praktisch solange man eine Platform verwendet für die es vorkompilierte Pakete gibt.

Nein ich widerspreche mir nicht, Installations-READMEs richten sich in der Regel in erster Linie an Programmierer. Das schliesst ja nicht aus das Anwender die etwas installieren wollen was nicht als Paket für ihre Distribution vorliegt, dort auch hinein schauen können. Es ist ja kein Quiz vorgeschaltet, welches erst die Kenntnisse abfragt bevor man die Erlaubnis bekommt die Datei zu öffnen. In vielen Fällen steht in der Datei eine kurze Standardanleitung. Zum Beispiel ``python setup.py install`` oder ``./configure; make; make install``, also Sachen die auch ein Anwender normalerweise noch eingegeben und ausgeführt bekommt. Das stösst allerdings schnell an Grenzen, nämlich dann wenn die Installation nicht problemlos verläuft oder wenn das ``configure``-Skript Optionen bereitstellt die man besser angeben sollte um das an seine Gegebenheiten anzupassen. Spätestens wenn ein C-Compiler-Lauf mit einer Fehlermeldung abbricht, hast Du eine Situation die Du mit keiner README auffangen kannst die für reine Anwender geschrieben ist, selbst wenn die in ihrer Muttersprache verfasst ist. An der Stelle stellt sich dann die Frage ob sich a) der Aufwand lohnt die READMEs für Anwender in andere Sprachen zu übersetzen, und b) ob man damit nicht mehr Anwender ermuntert das Programm selber zu übersetzen und die dann hoffnungslos überfordert sind wenn es Probleme gibt, oder Entscheidungen gefordert sind, die einen Programmierer benötigen, also sowieso schon Englischkenntnisse erfordern.

Wieso findest Du es merkwürdig wenn ich den Status-Quo beschreibe? Ich habe den nicht herbeigeführt oder bin Schuld daran. Wenn ich schreibe man muss halt Englisch können dann ist das nichts was ich den Leuten vorschreiben will, sondern schlicht das Ergebnis meiner Beobachtung wieviele nicht-englische READMEs es gibt im Verhältnis zu anderssprachigen. Auf der anderen Seite schreibe ich Dokumentation die sich an Programmierer richtet nur auf Englisch wenn der Code nicht ausschliesslich für den deutschsprachigen Raum interessant ist. Weil sich aus meiner Sicht der Aufwand nicht lohnt, gerade bei Nischenprogrammen, das auch noch mal alles auf Deutsch zu schreiben und zu pflegen, in der Hoffnung das vielleicht irgendwann mal einer vorbeikommt der kein Englisch kann, aber das Nischenprogramm nützlich findet.

Der Vorschlag läuft im Endeffekt darauf hinaus das man für jede Distribibution, Version, und Rechner-Architektur die man unterstützen möchte ein dafür passendes Paket erstellt, und die dann zu einem Megapaket zusammenstellt welches die redundanten Informationen nur einmal enthält. Dabei muss man nicht nur die Abhängigkeiten berücksichtigen, sondern auch andere Vorgaben der jeweiligen Distribibution, wie Beispielsweise das bei einigen Distributionen reine Python-Module die man für mehr als eine Python-Version woanders landen als Erweiterungsmodule die in C geschrieben sind. Oder wie Dienste in das System eingebunden werden, Pre- und Postinstall-Skripte und was die an (Hilfs-)Programmen voraussetzen können und ähnliches. Es erfordert also genau die Art von Ausfwand die niemand macht. Von ein paar Grossprojekten mal abgesehen. Definitiv nichts was ein Einzelprogrammierer oder ein kleines Team sich ans Bein binden möchte. Denn wenn die das wollten, dann hätten wir das schon. Vielleicht nicht dieses Uberpacket-Format, aber von jedem Projekt die ganzen Einzelpakete für die Distribution/Version/Architektur-Kombinationen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Was mir gerade einfällt: Von ActiveState gibt es den PyPM (Python Package Manager): http://code.activestate.com/help/faq/#pypm-index

Die ziehen wohl die Pakete von PyPi und "kompilieren" die. Allerdings ist es wohl keine GUI sondern nur ein CLI...

Außerdem alles closes source und nur für deren ActivePython Geschichte interessant, siehe: https://en.wikipedia.org/wiki/Python_Package_Manager

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten