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
Tipps für Umstieg auf Python 3.3
-
- User
- Beiträge: 9
- Registriert: Samstag 2. November 2013, 16:24
- Wohnort: Erlangen
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.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?
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.
- 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.
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.
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 hat geschrieben:Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?
-
- User
- Beiträge: 9
- Registriert: Samstag 2. November 2013, 16:24
- Wohnort: Erlangen
Hier: http://www.youtube.com/watch?v=f_6vDi7ywuABlackJack hat geschrieben:@Saugwels98: Was sind denn die Gründe für bei weitem besser die Du so hörst?
Übrigends vielen Dank für die Antworten(:
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?Darii hat geschrieben:K.a. ob Python 3 inzwischen überhaupt so weit ist, dass man damit arbeiten kann (Web, encoding etc...).
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.
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.Saugwels98 hat geschrieben:[...] oder lohnt es sich (noch) garnicht?
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.Darii hat geschrieben: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 hat geschrieben:Habt ihr Tipps oder gute Tutorials für den Umstieg, oder lohnt es sich (noch) garnicht?
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.
- 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
Als es rausgekommen ist. Danach habe ich beschlossen so lange bei 2.x zu bleiben bis es nicht mehr gepflegt wird.snafu hat geschrieben:Wann hast du dir Python 3 eigentlich zum letzten Mal ernsthaft angeguckt?
Das war auch nicht wirklich eine Aussage. Aber gut zu wissen, dass es inzwischen ok/brauchbar ist.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.
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...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?
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.
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.
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.Darii hat geschrieben:Als es rausgekommen ist. Danach habe ich beschlossen so lange bei 2.x zu bleiben bis es nicht mehr gepflegt wird.snafu hat geschrieben:Wann hast du dir Python 3 eigentlich zum letzten Mal ernsthaft angeguckt?
Das war auch nicht wirklich eine Aussage. Aber gut zu wissen, dass es inzwischen ok/brauchbar ist.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.
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 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.
@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.
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.
- 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...
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...