Hallo,
bei einem Paket bei PyPi steht: "Compatible with Python 2.x and 3.x."
Gibt es den häufiger Pakete, wo das zutrifft ? Ist es richtig, dass man solche Pakete mit pip oder setup 2 und 3 für beide Versionen verfügbar macht ?
Grüße
m-o
Gibt es Pakete, die mit Python2 und Python3 funktionieren ?
-
mephisto-online
- User
- Beiträge: 167
- Registriert: Sonntag 29. September 2013, 17:05
Danke !
Dann lasse ich mich mal überraschen, wie häufig es mir jetzt, wo ich es weiss und drauf achten werde, über den Weg laufen wird.
Dann lasse ich mich mal überraschen, wie häufig es mir jetzt, wo ich es weiss und drauf achten werde, über den Weg laufen wird.
Neue Pakete würde ich möglichst immer versionsübergreifend erstellen. Und ich glaube, das wird auch in vielen Fällen genau so getan. Aber die Frage ist komisch. Wo ist das Problem, selber zu recherchieren, für welche Python-Version ein Paket geeignet ist?
-
mephisto-online
- User
- Beiträge: 167
- Registriert: Sonntag 29. September 2013, 17:05
@snafu
Soso, ne komische Frage ... hast Du sie denn überhaupt durchgelesen ? Für Dich nochmal hier zum durchlesen, wo ich auch fett schreiben kann: "Gibt es Pakete, die mit Python2 und Python3 funktionieren ?"
Ich habe übrigens noch nie so viel recherchieren müssen, wie seit dem ich mit Python arbeite und etwas komplexere Dinge machen möchte ! Wenn man natürlich nur kleine Scriptchen mit Standardpaketen schreibt, ist das sicherlich nicht erforderlich, weil die Sprache selbst keiner grösseren Recherchen bedarf. Sie ist nämlich wirklicht grandios !
Für mein bisheriges Projekt (bislang 33 Pakete, 180kB Python-Code, Qt-Oberfläche, Ankopplung an mehrere Datenbanken und an ein Java-Programm über Sockets, läuft auf Mac, Linux und Win7/8, teilweise auch schon auf Android) musste ich nicht sonderlich viel nach irgendwas im Internet rumsuchen (ein paar Python-Newbie-Fragen konnte man mir hier erklären).
Wenn man aber etwas komplexere Dinge vorhat (in meinem Fall plattformübergreifende OpenGL-Core-3D-Grafik mit Blender als "Grafik-Editor"), bekommt man grosse Probleme mit der 2/3-Inkompatibilitäts-Katastrope. Ich kämpfe im Moment wie ein Löwe darum, mein Vorhaben in Python machen zu können und nicht wieder mit Java arbeiten zu müssen, wo solche Probleme einfach nicht existieren (mir die Sprache aber nicht so gut gefällt).
Ich stehe immer wieder vor dem Problem, dass ich Pakete brauche, die es nur für Python2 gibt (die auch selsamerweise immer noch gepflegt und weiter entwickelt werden !) und Pakete, die es nur für Python3 gibt. Beides zusammen geht bekanntlich nicht. Dass es Pakete gibt, die mit beiden Python-Versionen gehen, ist mir halt zum ersten Mal über den Weg gelaufen und versionsübergreifende Python-Programmierung habe ich in den durchgearbeiteten (wahrscheinlich grottenschlechten) Tutorials leider nicht gelernt.
Entschuldigung, dass ich gefragt habe.
Soso, ne komische Frage ... hast Du sie denn überhaupt durchgelesen ? Für Dich nochmal hier zum durchlesen, wo ich auch fett schreiben kann: "Gibt es Pakete, die mit Python2 und Python3 funktionieren ?"
Ich habe übrigens noch nie so viel recherchieren müssen, wie seit dem ich mit Python arbeite und etwas komplexere Dinge machen möchte ! Wenn man natürlich nur kleine Scriptchen mit Standardpaketen schreibt, ist das sicherlich nicht erforderlich, weil die Sprache selbst keiner grösseren Recherchen bedarf. Sie ist nämlich wirklicht grandios !
Für mein bisheriges Projekt (bislang 33 Pakete, 180kB Python-Code, Qt-Oberfläche, Ankopplung an mehrere Datenbanken und an ein Java-Programm über Sockets, läuft auf Mac, Linux und Win7/8, teilweise auch schon auf Android) musste ich nicht sonderlich viel nach irgendwas im Internet rumsuchen (ein paar Python-Newbie-Fragen konnte man mir hier erklären).
Wenn man aber etwas komplexere Dinge vorhat (in meinem Fall plattformübergreifende OpenGL-Core-3D-Grafik mit Blender als "Grafik-Editor"), bekommt man grosse Probleme mit der 2/3-Inkompatibilitäts-Katastrope. Ich kämpfe im Moment wie ein Löwe darum, mein Vorhaben in Python machen zu können und nicht wieder mit Java arbeiten zu müssen, wo solche Probleme einfach nicht existieren (mir die Sprache aber nicht so gut gefällt).
Ich stehe immer wieder vor dem Problem, dass ich Pakete brauche, die es nur für Python2 gibt (die auch selsamerweise immer noch gepflegt und weiter entwickelt werden !) und Pakete, die es nur für Python3 gibt. Beides zusammen geht bekanntlich nicht. Dass es Pakete gibt, die mit beiden Python-Versionen gehen, ist mir halt zum ersten Mal über den Weg gelaufen und versionsübergreifende Python-Programmierung habe ich in den durchgearbeiteten (wahrscheinlich grottenschlechten) Tutorials leider nicht gelernt.
Entschuldigung, dass ich gefragt habe.
Ich habe die Frage danach, ob es Pakete gibt, die unter beiden Versionen lauffähig sind, durchaus verstanden und sie bejaht. Dass dies bei weitem nicht auf alle verfügbaren Pakete zutrifft, habe ich damit ja nicht bestritten. Ich bleibe auch bei der Auffassung, dass man eigentlich ohne viel Mühe herausbekommt, für welche Python-Version ein Paket geschrieben wurde. Insofern hatte ich mich halt gefragt, was man da groß zu sagen soll. Dass dich diese Antwort dermaßen getroffen hat, tut mir leid. Ich kann aber herzlich wenig dafür, dass es diesen von dir bereits beschriebenen Versionsmischmasch gibt und dieser nun mal umso zum Tragen kommt, je mehr Fremdpakete man für sein Projekt benötigt. Nur bist du mit der Bestätigung dieser Erkenntnis jetzt auch nicht wirklich weiter gekommen...
Doch, das gibt es wie gesagt durchaus. Was du dann aber *nicht* machen kannst, ist ein über den Python 2.x Interpreter installiertes Paket in Python 3.x zu importieren. Und umgekehrt natürlich genau so wenig. Aber es sollte ja nicht das Thema sein, das Paket dann parallel in beiden Interpretern bzw im passenden Interpreter zu installieren.mephisto-online hat geschrieben:Ich stehe immer wieder vor dem Problem, dass ich Pakete brauche, die es nur für Python2 gibt (die auch selsamerweise immer noch gepflegt und weiter entwickelt werden !) und Pakete, die es nur für Python3 gibt. Beides zusammen geht bekanntlich nicht.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Deine Probleme mit Paketen sind kein Grund snafu anzufeinden, umso weniger weil er Recht hat.
Die Frage kann man nur mit "Ja, aber" beantworten. Und das "aber" ist eben ein riesiger Rattenschwanz: Konkret haengt das vom Einsatzgebiet des Moduls, des Alters, den Entwickler, und und und ... ab.
In deinem konkreten Fall hast du ja nicht nur mit reinen Python-Modulen zu tun sondern auch noch der CPython-API. Ich kann mir vorstellen, dass die Quote der Pakete die beide Versionen unterstuetzen hier geringer ist.
Die Frage kann man nur mit "Ja, aber" beantworten. Und das "aber" ist eben ein riesiger Rattenschwanz: Konkret haengt das vom Einsatzgebiet des Moduls, des Alters, den Entwickler, und und und ... ab.
In deinem konkreten Fall hast du ja nicht nur mit reinen Python-Modulen zu tun sondern auch noch der CPython-API. Ich kann mir vorstellen, dass die Quote der Pakete die beide Versionen unterstuetzen hier geringer ist.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Und anstatt rumzujammern könnte man vielleicht mal schildern, wo konkret die Probleme liegen, z.B. welche Interpreter-Version bevorzugt genutzt wird und welche Pakete dort nicht laufen. Vielleicht gibt es das betreffende Paket ja letztlich doch von irgendwo her in der passenden Version. Ansonsten gäbe es auch Wege der Interprozesskommunikation, d.h. der problematische Teil läuft in einem eigenen Interpreter mit der benötigten Python-Version und wird über dein Hauptprogramm quasi ferngesteuert. Da hängt es aber sehr von der Problemstellung ab, ob man dies mit vertretbarem Aufwand umsetzen kann bzw möchte.
-
BlackJack
Gemessen an der Anzahl der Pakete die es noch nicht für Python 3 gibt, verglichen mit denen die es nur für Python 3 gibt, würde ich ja einfach auf Python 2 umsteigen. Schon ist man den überwiegenden Grossteil der Python 2 / 3 Probleme los. Wenn man vorsätzlich Python 3 verwendet, dann *will* man diese Probleme haben. Sonst würde man nicht Python 3 verwenden. Wenn man das tut, darf man sich aber auch nicht ständig beschweren wie blöd die Situation bei Python 3 ist. 
-
mephisto-online
- User
- Beiträge: 167
- Registriert: Sonntag 29. September 2013, 17:05
Ich jammere nicht rum, ich bin sauer ! Kann mir ja ne Parkuhr suchen, aber die versteht nichts von Python.
Dass man ein in für eine Version installiertes Paket nicht in einer anderen benutzen kann, das habe ich schon gerade eben mal kapiert.
Da ich schon mit einem Java-Programm Interprozess-Kommunikation mache (ich erwähnte es bereits) , hatte ich mich dazu entschlossen, den 3D-Teil meines Programms ebenfalls auf diese Weise anzukoppeln und in Python2 zu schreiben. Bei der Projektierung bin ich dann in die Situation gekommen, das es ein wichtiges grösseres Paket nur für Python3 gibt und ich zusätzlich aber Python2-Pakete brauche.
Seite mehreren Wochen mache ich jetzt nichts anderes, als eine meinen Vorstellungen genügende Zusammenstellung zu finden, die trotz der Python2/3-Inkopatibilität funktioniert. Um mein Projekt nicht ganz aus den Augen zu verlieren, habe ich den ersten Teil meines 3D-Vorhabens schon in Java umgesetzt, aber dabei immer wieder zwischendurch an der Python-Lösung gearbeitet (recherchiert).
Wie auch immer, meine Frage ist ja schon ganz am Anfang beantwortet worden und ich denke, dass man diesen Tread jetzt als erledigt erklären kann.
Ich wollte hier niemanden anfeinden, reagiere aber nun mal pissig, wenn man mich für blöd verkauft und damit ebenfalls anfeindet. Es tut mir leid, dass ich hier mit meinen blöden Fragen wieder mal Unfrieden gestiftet habe.
Ist ja auch egal, heute ist Sonntag, draussen ist schones Wetter und morgen kommt definitiv mein neuer Rechner !
Dass man ein in für eine Version installiertes Paket nicht in einer anderen benutzen kann, das habe ich schon gerade eben mal kapiert.
Da ich schon mit einem Java-Programm Interprozess-Kommunikation mache (ich erwähnte es bereits) , hatte ich mich dazu entschlossen, den 3D-Teil meines Programms ebenfalls auf diese Weise anzukoppeln und in Python2 zu schreiben. Bei der Projektierung bin ich dann in die Situation gekommen, das es ein wichtiges grösseres Paket nur für Python3 gibt und ich zusätzlich aber Python2-Pakete brauche.
Seite mehreren Wochen mache ich jetzt nichts anderes, als eine meinen Vorstellungen genügende Zusammenstellung zu finden, die trotz der Python2/3-Inkopatibilität funktioniert. Um mein Projekt nicht ganz aus den Augen zu verlieren, habe ich den ersten Teil meines 3D-Vorhabens schon in Java umgesetzt, aber dabei immer wieder zwischendurch an der Python-Lösung gearbeitet (recherchiert).
Wie auch immer, meine Frage ist ja schon ganz am Anfang beantwortet worden und ich denke, dass man diesen Tread jetzt als erledigt erklären kann.
Ich wollte hier niemanden anfeinden, reagiere aber nun mal pissig, wenn man mich für blöd verkauft und damit ebenfalls anfeindet. Es tut mir leid, dass ich hier mit meinen blöden Fragen wieder mal Unfrieden gestiftet habe.
Ist ja auch egal, heute ist Sonntag, draussen ist schones Wetter und morgen kommt definitiv mein neuer Rechner !
@mephisto-online: bei jedem Projekt, das auf eine gewisse Größe gewachsen ist, kommt irgendwann der Moment, wo man auf Hürden stößt, die nur mit sehr großem Aufwand zu bereinigen sind. Das nennt sich „refactoring“ und ist ein ganz normaler und üblicher Vorgang in der Softwareentwicklung. Dabei solltest Du bedenken, dass Work-arounds die Qualität des Codes auf keinen Fall verbessern.
Ich denke, dass Du an einem Punkt bist, wo Du merkst, dass Python 3 für Deine Anforderungen nicht genügt, Python 2 aber viele Deiner Probleme ganz einfach löst. Natürlich kannst Du wie ein 3jähriger mit dem Fuß aufstampfen und "ich will aber" schreien, oder aber mit gutem Beispiel vorangehen, Deine Bibliotheken alle Python 2/3-kompatibel schreiben und solange Python 2 zu benutzen, bis die anderen Drittanbieter ihre Pakete auch für Python 3 fit gemacht haben. Die Energie, die Du ins Schimpfen gesteckt hast, könntest Du das nächste mal dann produktiver einsetzen.
Ich denke, dass Du an einem Punkt bist, wo Du merkst, dass Python 3 für Deine Anforderungen nicht genügt, Python 2 aber viele Deiner Probleme ganz einfach löst. Natürlich kannst Du wie ein 3jähriger mit dem Fuß aufstampfen und "ich will aber" schreien, oder aber mit gutem Beispiel vorangehen, Deine Bibliotheken alle Python 2/3-kompatibel schreiben und solange Python 2 zu benutzen, bis die anderen Drittanbieter ihre Pakete auch für Python 3 fit gemacht haben. Die Energie, die Du ins Schimpfen gesteckt hast, könntest Du das nächste mal dann produktiver einsetzen.
-
mephisto-online
- User
- Beiträge: 167
- Registriert: Sonntag 29. September 2013, 17:05
@Sirius3
Vielleicht erst mal lesen lernen bevor Du mich hier anpampst und beleidigst....
Wenn ich die Energie nicht darauf verwenden müsste, die Fassung zu bewahren bei solchen "Schlaumeiern" in diesem Forum, wäre ich wahrscheinlich auch schon weiter. Ich schätze mal 70/30 mit Java ! Da stampfe ich auch nicht mit den Füßen auf den Boden und scheie "Ich will aber unbedingt mit Python programmieren". In erster Linie möchte ich weiter kommen.
Vielleicht erst mal lesen lernen bevor Du mich hier anpampst und beleidigst....
Wenn ich die Energie nicht darauf verwenden müsste, die Fassung zu bewahren bei solchen "Schlaumeiern" in diesem Forum, wäre ich wahrscheinlich auch schon weiter. Ich schätze mal 70/30 mit Java ! Da stampfe ich auch nicht mit den Füßen auf den Boden und scheie "Ich will aber unbedingt mit Python programmieren". In erster Linie möchte ich weiter kommen.
-
Leonidas
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja dann mach Java. Oder portier deinen Kram. Oder mach was du magst.mephisto-online hat geschrieben:Wenn ich die Energie nicht darauf verwenden müsste, die Fassung zu bewahren bei solchen "Schlaumeiern" in diesem Forum, wäre ich wahrscheinlich auch schon weiter. Ich schätze mal 70/30 mit Java !
Hier ist der einzige der Leute anfeindet du selbst. In wie weit das klug ist kannst du ja selbst überlegen. Daher mache ich diesen Thread zu, das bringt es ja nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
