Welche Python-Version benutzen?

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.
Antworten
Barcellona
User
Beiträge: 74
Registriert: Dienstag 25. Mai 2010, 12:10

Hallo zusammen,

mal eine Frage zu den Python-Releases.

Mit welcher Version von Python sollte man am besten arbeiten?

Habe bisher die 2.6er Version installiert und überlege auf die 3.1er zu wechseln, da sich ja schon elementare Sachen wie die
print-Funktion leicht geändert haben und ich so den Code nicht später wieder überarbeiten muss, wenn die 2.6er Version veraltet ist...
Andererseits benutze ich auch Bibliotheken wie PyOpenGL, PyQt zB und habe gelesen, dass die 3er Reihe noch nicht mit allen Bibliotheken kompatibel ist. Außerdem erscheint wohl auch eine Version 2.7 :?

Mit welcher Version sollte ich denn am besten arbeiten?
Wäre es ratsam beide Versionen auf dem Rechner zu haben?
BlackJack

@Barcellona: Du solltest überprüfen ob alle von Dir benötigten Bibliotheken für 3.x verfügbar sind. Falls nicht beantwortet das die Frage ja im Grunde ja schon.

Man kann jetzt schon mit der Portierung auf 3.x im Hinterkopf programmieren, denn in die 2.6 wurde schon so viel wie möglich "rückportiert" und man kann einiges aus dem `__future__`-Modul importieren, um das eine oder andere Verhalten der 3.x zu aktivieren. Ausserdem gibt es `2to3.py` um so viel wie möglich automatisiert zu übersetzen.

Eine von den Python-Entwicklern vorgeschlagene Strategie ist es, auf Basis von der letzten 2.x den Quelltext der eigenen Projekte so weit an den Übergang anzupassen, dass man mit `2to3.py` eine zeitlang aus einer Quelltextbasis beide Python-Zweige unterstützen kann.

Die Downloadseite auf Python.org empfiehlt die aktuelle 2.x-Version zu nehmen, wenn man sich unsicher ist.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und 2.7 ist nochmal einen Schritt näher am Dreier-Zweig. Ich werde vermutlich den Weg 2.6->2.7->3.2 gehen. Aber letztlich läuft es wohl auf das hinaus, was mir das aktuelle Ubuntu jeweils als `python` anbietet...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ich würde empfehlen mindestens 2.6 zu nutzen, unterstütze keine Version darunter. Desweiteren gibt es ein paar Regeln an die man sich halten sollte wenn du das Projekt nach 3.x portieren willst:
  • Schreib jede Menge Tests für dein Projekt, jede Expression muss für jeden möglichen Programmablauf getestet werden.
  • Für Tests nutze irgendetwas dass mit allen Python Versionen funktioniert die dein Projekt unterstützt, distutils, py.test oder nose sollten passen.
  • Sorg dafür dass die Tests mit jeder Python Version die unterstützt wird mit dem Ausführen von exakt einem Skript ausgeführt werden können. Für ein einfaches Beispiel schau dir Pygments an.
  • Nutze den b Prefix für Strings um sie explizit als bytestrings zu deklarieren wenn es byte strings sein müssen. Nutze den u Prefix für Strings um sie explizit als unicode strings zu deklarieren wenn es unicode strings sein müssen. Nutze keinen Prefix nur dann wenn es egal ist: Konstanten, Schlüssel in Dictionaries und andere Strings die nicht Teil der Ein- oder Ausgehenden Daten sind, mit ihnen verglichen werden, zusammengesetzt werden oder anders direkt in Verbindung kommen.
  • Wenn du mit Textdateien arbeitest dessen Kodierung feststeht öffne sie mit codecs.open
  • Öffne alle anderen Dateien explizit mit rb als Modus.
  • Für Streams die keine Dateien sind oder für Textdateien dessen Encoding du erst kennst, nach dem du ein Teil von ihnen gelesen hast, nutze die Stream Klassen in codecs.
  • Wenn du Strings von Funktionen/Methoden/Klassen andere Bibliotheken bekommst prüfe ihren Typ, bevor du versuchst sie zu en-/dekodieren, dies gilt auch für builtins(raw_input() gibt in 2.x byte strings zurück, das Äquivalent input() in 3.x unicode strings).
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich habe 2.6 und 3.1 installiert. Ich benutze 3.1 für alle Spielereien und Forumsbeispiele. Da ich Python zur Zeit nicht (beruflich) für Web-Entwicklung einsetze, brauche ich kein 2.6, welches ich ansonsten für Django oder ähnliches benutzen würde (müsste), weil WSGI für 3.x nicht überzeugt und kein (oder kaum ein) Web-Rahmenwerk oder Datenbank-Treiber 3.x unterstützt. An dem Tag (nächsten Monat oder so), an dem 2.7 final ist und per MacPorts verfügbar ist, werde ich anstelle von 2.6 dann 2.7 benutzen, außer äußere Umstände wie ein vorinstalliertes Python auf einem Linux (Ubuntu 10.04 benutzt 2.6) zwingen mich zu einer älteren Version.

Stefan
Barcellona
User
Beiträge: 74
Registriert: Dienstag 25. Mai 2010, 12:10

Danke für die Antworten, werde wohl erstmal noch mit 2.6 weiter arbeiten.
Benutzeravatar
kunstlust
User
Beiträge: 3
Registriert: Samstag 23. März 2013, 12:05
Kontaktdaten:

Welche Version von python ist zu bevorzugen? 3.x oder 2.x? Auf meinem raspberry pi ist 2.7 installiert, da frage ich mich, ob ich unter Windows nun die 3.x oder auch die Version 2.7 bevorzugen sollte? Könnte mir jemand kurz die gravierenden Unterschiede aufzeigen und einem Anfänger raten, welche Version er besser erlernen sollte? Danke :D
BlackJack

@kunstlust: Da wirst Du wahrscheinlich immer noch widersprüchliche Aussagen bekommen.

Für den praktischen Einsatz kommt für mich Python 3 nicht in Frage weil a) nicht alles was ich dafür benötige auf 3 portiert ist, und b) 2 noch Standard auf den allermeisten Rechnern ist, wo ich Python einsetze. Python 3 würde mir also, teilweise unüberwindbare, Probleme bereiten. Auf der anderen Seite sehe ich bei Python 3 auch nichts was mich da jetzt unbedingt hinziehen würde. Also keine Vorteile, die die Nachteile aufwiegen würden.
Benutzeravatar
kunstlust
User
Beiträge: 3
Registriert: Samstag 23. März 2013, 12:05
Kontaktdaten:

BlackJack hat geschrieben:@kunstlust: Da wirst Du wahrscheinlich immer noch widersprüchliche Aussagen bekommen.

Für den praktischen Einsatz kommt für mich Python 3 nicht in Frage weil a) nicht alles was ich dafür benötige auf 3 portiert ist, und b) 2 noch Standard auf den allermeisten Rechnern ist, wo ich Python einsetze. Python 3 würde mir also, teilweise unüberwindbare, Probleme bereiten. Auf der anderen Seite sehe ich bei Python 3 auch nichts was mich da jetzt unbedingt hinziehen würde. Also keine Vorteile, die die Nachteile aufwiegen würden.
Ich danke dir und habe mir schon sowas gedacht, selbst auf dem Mac ist die 2.7 vorinstalliert.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn Code nicht nur für den Gebrauch auf dem eigenen Rechner / System bestimmt ist, dann würde ich aber schon empfehlen, Programme so zu schreiben, dass sie in beiden Zweigen lauffähig sind. Auch wenn das teilweise etwas umständlich sein kann.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kunstlust hat geschrieben:Ich danke dir und habe mir schon sowas gedacht, selbst auf dem Mac ist die 2.7 vorinstalliert.
Das einzige mir bekannte einigermaßen verbreitete System auf dem Python 3.x als Standard ist, ist Arch Linux.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Leonidas hat geschrieben:
kunstlust hat geschrieben:Ich danke dir und habe mir schon sowas gedacht, selbst auf dem Mac ist die 2.7 vorinstalliert.
Das einzige mir bekannte einigermaßen verbreitete System auf dem Python 3.x als Standard ist, ist Arch Linux.
Ich glaube auf Ubuntu ist Python 3 auch standardmäßig dabei.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

nomnom hat geschrieben:Ich glaube auf Ubuntu ist Python 3 auch standardmäßig dabei.
Dort ist, wenn man "python" installiert, auch auf Raring Ringtail noch Version "2.7.3-13ubuntu1". In Arch Linux ist das "3.3.0-3" und exakt das was man bekommt wenn man in der Konsole "python" eintippt. Darauf bezog sich die Aussage.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Leonidas hat geschrieben:
kunstlust hat geschrieben:Ich danke dir und habe mir schon sowas gedacht, selbst auf dem Mac ist die 2.7 vorinstalliert.
Das einzige mir bekannte einigermaßen verbreitete System auf dem Python 3.x als Standard ist, ist Arch Linux.
Ich denke, unter Windows hingegen kommt es öfter mal vor, dass jemand sich das neueste Python installieren wollte und dadurch eine Programmverknüpfung mit Python 3 auf dem System hat.
Benutzeravatar
kunstlust
User
Beiträge: 3
Registriert: Samstag 23. März 2013, 12:05
Kontaktdaten:

Noch eine bescheidene Frage, wo nun der gravierende Unterschied ist?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

kunstlust hat geschrieben:Noch eine bescheidene Frage, wo nun der gravierende Unterschied ist?
http://wiki.python.org/moin/Python2orPython3
Antworten