Tipps für Umstieg auf Python 3.3

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
Saugwels98
User
Beiträge: 9
Registriert: Samstag 2. November 2013, 16:24
Wohnort: Erlangen

Hey Leute,
momentan programmiere ich noch mit Python 2.7, aber immer öfter hör ich, das Python 3.3 um weiten besser sei. Naja, da Python 2 nicht mehr weiterentwickelt wird, würde ich auf Python 3 umsteigen. Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?

Vielen Dank im Vorraus,
Paul
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Saugwels98 hat geschrieben:momentan programmiere ich noch mit Python 2.7, aber immer öfter hör ich, das Python 3.3 um weiten besser sei. Naja, da Python 2 nicht mehr weiterentwickelt wird, würde ich auf Python 3 umsteigen. Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?
Ich verwende sowohl Python 2 wie auch Python 3. Python 3 bietet mir eine aufgeräumte Standardbibliothek und einige zusätzliche Sprachkonstrukte, Python 2 hat dafür einige Libraries die noch nicht nach Python 3 portiert wurden.

2to3 gibt einige wertvolle Hinweise für die Migration und führt sie bei Bedarf auch selber durch.

Relativ praktisch ist ab und zu six, um Kompatibilität zwischen Python 2 und Python 3 herzustellen.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich habe mittlerweile auch angefangen Python 3.3 zu benutzen. Ich muss sagen das ich von dem "Python Windows launcher" (PEP 397) sehr angetan bin. Damit kann man Python 2 und 3 genau so gut unter Windows parallel betreiben, wie man es von Linux gewöhnt ist.

Schade das immer noch ein paar gute Bibliotheken fehlen. Allerdings gibt es manchmal schon eine experimentelle Python3 Unterstützung. Bei openCV ist das zum Beispiel so und auch bei PyPy gibt es Bewegung.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Juchhu, Pillow aka PIL läuft nun unter Python 3.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@Saugwels98: Was sind denn die Gründe für bei weitem besser die Du so hörst? 8)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Saugwels98 hat geschrieben:Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?
Ja tu es nicht. 2.7 wird (hoffentlich) noch eine Weile existieren. K.a. ob Python 3 inzwischen überhaupt so weit ist, dass man damit arbeiten kann (Web, encoding etc...).
Saugwels98
User
Beiträge: 9
Registriert: Samstag 2. November 2013, 16:24
Wohnort: Erlangen

BlackJack hat geschrieben:@Saugwels98: Was sind denn die Gründe für bei weitem besser die Du so hörst? 8)
Hier: http://www.youtube.com/watch?v=f_6vDi7ywuA

Übrigends vielen Dank für die Antworten(:
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Darii hat geschrieben:K.a. ob Python 3 inzwischen überhaupt so weit ist, dass man damit arbeiten kann (Web, encoding etc...).
Jetzt fällst du mit dem Extrem in die andere Richtung. Im Web kannst du natürlich mit Python 3 arbeiten und auch Django 1.6 unterstützt Python 3 bereits. Welche Probleme hast du denn mit dem Encoding? Zielst du jetzt auf den UTF-8-Default oder geht es dir auch hier ums Web und die Low-Level WSGI-Schnittstelle?

Ich nehme dein "K.a." jetzt tatsächlich so wie es geschrieben war, nämlich dass du tatsächlich keine Ahnung davon hast und frage mich dann nur, wozu dein Beitrag gut sein sollte.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

BlackJack hat geschrieben:@Saugwels98: Was sind denn die Gründe für bei weitem besser die Du so hörst? 8)
Keine Notwendigkeit, encoding=utf-8 im Dateiheader zu schreiben. Spart Platz :) Imho der wichtigste Umsteigegrund.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Saugwels98 hat geschrieben:[...] oder lohnt es sich (noch) garnicht?
Lohnt sich aufgrund der vielen inzwischen hinzu gekommenen Features durchaus. Leider ist aber noch nicht jedes wichtige Fremdmodul mit der Zeit gegangen. Bei einem Wechsel sollte man daher stets abklären, ob auch wirklich alle verwendeten Bibliotheken Python-3-kompatibel sind. Nicht dass man damit am Ende auf die Nase fällt. ;)
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Darii hat geschrieben:
Saugwels98 hat geschrieben:Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?
Ja tu es nicht. 2.7 wird (hoffentlich) noch eine Weile existieren. K.a. ob Python 3 inzwischen überhaupt so weit ist, dass man damit arbeiten kann (Web, encoding etc...).
Wann hast du dir Python 3 eigentlich zum letzten Mal ernsthaft angeguckt? Deine Aussagen haben für die ersten Jahre, in denen Python 3.x einen ziemlich schlechten Start hatte, noch zugetroffen. Das ist aber inzwischen überstanden. Wenn Gegenargumente irgendwann veraltet sind, dann sollte man das Bringen dieser Kritik auch sein lassen, einfach weil sie nicht mehr den Tatsachen entspricht.

Oder kannst du einen (aus deiner Sicht) wirklich gewichtigen Makel nennen, der auf eine aktuelle Python-Version zutrifft? Dann kann der Leser ja immer noch selbst entscheiden, wie er dies gegenüber den Vorteilen abwiegen will. Aber so Aussagen, dass Python 3 nach wie vor untauglich für das Entwickeln von Web-Apps (oder gar für das generelle Arbeiten) ist, sind ziemlicher Blödsinn.

Nichtsdestotrotz würde ich zumindest beim Thema Web-Entwicklung wohl noch 2-3 Jahre mit dem Umstieg abwarten, um den Modulautoren mehr Zeit für die Anpassung ihrer Bibliotheken zu geben. Momentan hätte ich da noch etwas Bauchschmerzen. Nicht mehr wegen Python an sich, sondern wie gesagt eher wegen den Drittmodulen.

Hinzu kommt das, was BlackJack wohl schon andeuten wollte: Zumindest, wenn man alten Code hat, der noch für Python 2.x gedacht war, sollte man gründlich überlegen, ob der Aufwand für die Portierung sich am Ende tatsächlich auszahlen würde. Code für neue Projekte hingegen würde ich inzwischen *immer* Python-3-kompatibel schreiben.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ein blick auf https://docs.djangoproject.com/en/dev/topics/python3/ ist auch nicht schlecht :wink:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

snafu hat geschrieben:Wann hast du dir Python 3 eigentlich zum letzten Mal ernsthaft angeguckt?
Als es rausgekommen ist. Danach habe ich beschlossen so lange bei 2.x zu bleiben bis es nicht mehr gepflegt wird.
Aber so Aussagen, dass Python 3 nach wie vor untauglich für das Entwickeln von Web-Apps (oder gar für das generelle Arbeiten) ist, sind ziemlicher Blödsinn.
Das war auch nicht wirklich eine Aussage. Aber gut zu wissen, dass es inzwischen ok/brauchbar ist.

Aber das Hauptproblem von Python 3 ist ja immer noch dasselbe, es gibt einfach noch keinen wirklich triftigen Grund es zu nutzen. Oder übersehe ich da etwas? Was hat Python3 inzwischen, was Python2 nicht hat?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Darii hat geschrieben:Aber das Hauptproblem von Python 3 ist ja immer noch dasselbe, es gibt einfach noch keinen wirklich triftigen Grund es zu nutzen. Oder übersehe ich da etwas? Was hat Python3 inzwischen, was Python2 nicht hat?
Es ist inzwischen einiges interessantes in der stdlib oder wird mit 3.4 reinkommen. Da wäre z.b. statistics; pbkdf2 und eine brauchbare Funktion für Vergleiche; selectors was Netzwerkkram weg von Twisted angenehm machen sollte; kleinere Sachen wie ipaddress und Sachen in contextlib. Dazu kommen dann noch Sachen wie tulip...

Anders als vor ein paar Jahren muss man auch 2.5 und inzwischen eigentlich auch 2.6 nicht mehr unterstützen. Code zu schreiben der unter 3.3+ und 2.6/7 ohne 2to3 oder sowas zu nutzen ist damit eine praktikable Option geworden, welche jedes größere Projekt inzwischen nutzt und die Entwicklung recht angenehm macht.

Django und Flask unterstützen 3.3 inzwischen größtenteils problemlos und die Community beginnt jetzt mitzuziehen und alles was davon abhängt zu portieren.

Im großen und ganzen ist mMn jetzt der optimale Zeitpunkt um den Umstieg anzufangen. 2.6 ist schliesslich EOL und damit werden jetzt die Tage gezählt bis 2.7 stirbt, darauf würde ich nicht erst warten. Jetzt hat man noch Zeit sich auch bei Abhängigkeiten einzubringen und zu helfen diese zu portieren, sollte dies notwendig sein so dass man einen problemlosen Übergang hat.
BlackJack

Es gibt Leute die haben einfach Glück. Ich muss für ein paar Sachen sogar noch Python 2.4 unterstützen, weil das auf einigen Geräten wie NAS noch drauf ist und Xen (CentOS) lebt auch in dunkler Vorzeit was die Python-Version angeht. :-(
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Darii hat geschrieben:
snafu hat geschrieben:Wann hast du dir Python 3 eigentlich zum letzten Mal ernsthaft angeguckt?
Als es rausgekommen ist. Danach habe ich beschlossen so lange bei 2.x zu bleiben bis es nicht mehr gepflegt wird.
Aber so Aussagen, dass Python 3 nach wie vor untauglich für das Entwickeln von Web-Apps (oder gar für das generelle Arbeiten) ist, sind ziemlicher Blödsinn.
Das war auch nicht wirklich eine Aussage. Aber gut zu wissen, dass es inzwischen ok/brauchbar ist.

Aber das Hauptproblem von Python 3 ist ja immer noch dasselbe, es gibt einfach noch keinen wirklich triftigen Grund es zu nutzen. Oder übersehe ich da etwas? Was hat Python3 inzwischen, was Python2 nicht hat?
Also ohne dir jetzt irgendwie zu nahe treten zu wollen oder das irgendwie böse klingen zu lassen, aber irgendwie klingst du mir etwas arg fortschrittsfeindlich in der Hinsicht. Ich sage ja nicht, dass man jede bescheuerte Neuerung mitmachen muss (Abo-Modelle bei Software *hust*, das boykottiere ich auch so lange wie es geht), aber du malst ja regelrecht den Teufel an die Wand mit Python 3. Wenn man - wie anscheinend Blackjack - softwareseitig nicht umsteigen kann, dann ist das ja verständlich, aber nach einem kurzen Blick, wahrscheinlich mit "ih, ich muss mich umgewöhnen", sich dann nicht mals ansatzweise damit zu befassen ist echt lächerlich.

Es gibt viele Gründe, auf Python 3 umzusteigen, vielleicht kennst du sie nur nicht? Ich finde es z.B. unglaublich gut, dass die komplete STL jetzt Unicode-basiert ist. Bei Python 2 kann man sich zwar mit diesem komischen u"..." behelfen (bei Python 3 reichen einfache "..."), aber selbst dann bleibt afaik z.B. das csv-Modul unicode-blind. Bei Python 3 funktioniert es sofort in Unicode (und alle anderen Module in der STL wohl auch, so wie ich gelesen habe (habe allerdings nicht alle ausprobiert)). Das alleine ist schon das Killerfeature was den Umstieg erleichtert.

Insbesondere mit deinem "Danach habe ich beschlossen so lange bei 2.x zu bleiben bis es nicht mehr gepflegt wird." wirst du dich irgendwann doch umgewöhnen müssen.
BlackJack

@Hellstorm: Unicode-Literale kann ich in Python 2.7 auch haben. Muss nur ein entsprechender `__future__`-Import oben ins Modul. Automagisch kann das `csv`-Modul Unicode auch nicht korrekt machen, da muss man schon noch die Kodierung angeben. Bei Python 2.7 ist ein „Rezept” in der Dokumentation des `csv`-Moduls für einen `UnicodeReader` und einen `UnicodeWriter`.

Auf jeden Fall hauen mich die Unicode-Literale nicht vom Hocker und bei vielem muss man sich noch genau so manuell um das kodieren und dekodieren kümmern wie unter 2.7. Mit dem Unterschied das Python 3 mehr durchgehen lässt ohne zu meckern, was dann aber nicht wirklich portabel ist. Das halte ich sogar für eine Verschlechterung.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich denke das ist das Hauptproblem bei Python 3. Zu wenig Neuerungen die wirklich was bringen im Vergleich zum Aufwand beim portieren.
Vielleicht hätte man es doch besser Schrittweise tun sollen oder halt mehr bieten, für einen besseren Anreiz...

Wobei der Umstieg letztlich an den noch fehlenden 3rd libs liegt. Sind die alle verfügbar spricht auch nichts mehr für Python 2.

Da nun Django mit 2 und 3 läuft und PyPy auch die 3er angeht wird es für mich bald interessant. Von meinen ganzen Projekten ist bisher nur python-creole für 2 und 3 lauffähig getestet...

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