Hey,
ich will wieder mit Python weiter machen... Meine Frage ist jetzt ob ich weiter mit 2. machen soll oder auf 3. umsteige.
Lohnt es sich jetzt noch weiter 2. zu machen oder ist 3. da besser? (z.b. schneller, wirkungsvoller ... etc. )
Kann mir jemand mal kurz paar Vor- und Nachteile nennen? Habe gerade leider sehr wenig Zeit dafür zu suchen...
Schon mal danke im Vorraus,
mfg
Entscheidung zu Python 2 oder 3 ...
-
- User
- Beiträge: 14
- Registriert: Samstag 14. Februar 2015, 15:51
Keine Lust auf eine Signatur...
- CrisBee
- User
- Beiträge: 61
- Registriert: Mittwoch 2. Oktober 2013, 10:45
- Wohnort: Bielefeld
- Kontaktdaten:
Also ich leier einfach mal runter, was man mir empfohlen hat:
Mittlerweile kannst du ruhig mit 3 anfangen. Viele Bibliotheken sind dafür bereit und sofern du nicht auf Abwärtskompatibilität aus bist, machst du mit 3 nichts falsch. Schwieriger wird es glaube ich, dafür gute Tutorials zu finden, wobei die gibt es für 2 mMn auch nicht. Willst du bestehende Projekte (auf 2er Basis) warten, erweitern, etc...dann wäre 2 vllt. besser für dich.
Nimm meinen Beitrag jetzt aber nicht zu 100% für voll, "höre" dir lieber an, was die Profis hier zu sagen haben!
Mittlerweile kannst du ruhig mit 3 anfangen. Viele Bibliotheken sind dafür bereit und sofern du nicht auf Abwärtskompatibilität aus bist, machst du mit 3 nichts falsch. Schwieriger wird es glaube ich, dafür gute Tutorials zu finden, wobei die gibt es für 2 mMn auch nicht. Willst du bestehende Projekte (auf 2er Basis) warten, erweitern, etc...dann wäre 2 vllt. besser für dich.
Nimm meinen Beitrag jetzt aber nicht zu 100% für voll, "höre" dir lieber an, was die Profis hier zu sagen haben!

Das Reallife ist nur etwas für Leute, die keine Freunde im Internet haben! 
Meine Fotografie: http://www.cutefeet.de

Meine Fotografie: http://www.cutefeet.de
Wenn man keine speziellen Python-3-Features braucht, dann kann man auch Python 2.7 nehmen. Wie schon geschrieben wurde, gibt es dafür - sozusagen aus historischen Gründen - weitaus mehr Literatur. Ansonsten könnte man Python 3 auch noch aus "ideologischen" Gründen nehmen, weil man das Fortkommen von Python unterstützen möchte, wenn du verstehst, was ich meine. 

War nicht mal die Rede in div. Talks man wolle eine 2er Version herausbringen die näher, kompatibler und den einfacheren Umstieg auf 3 erlaubt? Das zeigt wohl ein wenig, das noch viele nicht umsteigen wollen bzw. müssen.
Es gibt ein paar Leute die dass für eine gute Idee halten aber es gibt weder einen konkreten Vorschlag wie ein solches Release aussehen würde, noch gibt es dazu eine ernsthafte Diskussion. Neue Releases wird es im 2er Branch definitiv nicht mehr geben, von Bugfix Releases abgesehen.
Zum eigentlichen Thema lässt sich sagen dass man durchaus noch mit relativ geringem Aufwand Code schreiben kann der sowohl unter Python 2 als auch unter Python 3 läuft. Da das Ende von Python 2 in Sicht ist, stellt sich also die Frage "Python 2 oder Python 3?" nicht, es sei den man möchte PyPy nutzen. Vielmehr nutzt man ohnehin Python 3 und es stellt sich die Frage ob man auch Python 2 kompatibel bleibt. Letzteres lässt sich für Anwendungen kategorisch mit Nein beantworten und z.B. bei Libraries muss man überlegen, ob man sie in Python 2 Code verwenden möchte.
Zum eigentlichen Thema lässt sich sagen dass man durchaus noch mit relativ geringem Aufwand Code schreiben kann der sowohl unter Python 2 als auch unter Python 3 läuft. Da das Ende von Python 2 in Sicht ist, stellt sich also die Frage "Python 2 oder Python 3?" nicht, es sei den man möchte PyPy nutzen. Vielmehr nutzt man ohnehin Python 3 und es stellt sich die Frage ob man auch Python 2 kompatibel bleibt. Letzteres lässt sich für Anwendungen kategorisch mit Nein beantworten und z.B. bei Libraries muss man überlegen, ob man sie in Python 2 Code verwenden möchte.
Also ich nutze nicht „ohnehin Python 3“, kann ich gar nicht, wie viele andere auch die eine grössere Python 2 Codebasis pflegen und nicht mal eben so umsteigen können. Der Grossteil läuft auf einem System auf dem Python 2.6 das Standardpython ist. Und das *muss* ich nutzen. Auf vielen anderen Rechnern kann ich auch nicht entscheiden welches Python installiert ist, und ich glaube ich habe bei mir beruflich noch keinen einzigen Server gesehen wo Python 3.x als *Standardpython* läuft. Solange das nicht nahezu flächendeckend der Fall ist, brauche ich mit dem ernsthaften portieren gar nicht erst anfangen.
Das Ende von Python 2.7 ist in *fünf* Jahren in Sicht. Da kann viel passieren…
Das Ende von Python 2.7 ist in *fünf* Jahren in Sicht. Da kann viel passieren…
Meinst du mit Standardpython das `python` irgendein Python 3 ist oder dass einfach ein Python 3 nicht erst installiert werden muss? Letzteres ist wenn ich mich täusche bei Ubuntu schon seit einiger Zeit der Fall.BlackJack hat geschrieben:Auf vielen anderen Rechnern kann ich auch nicht entscheiden welches Python installiert ist, und ich glaube ich habe bei mir beruflich noch keinen einzigen Server gesehen wo Python 3.x als *Standardpython* läuft.
@DasIch: ``python`` wird hoffentlich nie ein Python 3 sein, da haben sich die Python-Entwickler ja schon zu geäussert das ``python`` immer Python 2 meint weil sonst das Chaos zu gross wird wenn in der She-Bang-Zeile ``python`` steht und man erst rätseln müsste welches Python das nun ist.
Mit Standardpython meine ich das Python das vom System benutzt wird, welches man also nicht deinstallieren könnte ohne was kaputt zu machen. Oder anders herum: Wenn man Python 2 nicht deinstallieren kann weil's vom System gebraucht wird, dann ist Python 3 noch nicht ”angekommen”. Irgendwelche Minimalsysteme die ohne Python auskommen mal ausgenommen.
Wichtig wäre beispielsweise auch gegen welches Python `mod_wsgi` vom Apache auf dem System gelinkt ist.
Die Situation bei mir: Ein paar Server laufen wohl auch auf Ubuntu aber das meiste wird irgendwas stabiles von Debian sein. Und dann gibt es immer mal wieder so etwas tolles wie CentOS wo Python 2.4! drauf läuft. Ebenso auf dem einen oder anderen NAS oder ähnlichem Gerät mit Python 2.4 oder 2.5. Und beim Grossteil der Geräte bestimmen andere was darauf läuft, beziehungsweise muss man da schon gute Gründe haben wenn man den Aufwand eines Upgrades rechtfertigen will. (Und ja, erschreckenderweise ist ein „der Support für diese Distributionsversion ist seit Jahren abgelaufen“ manchmal *kein* guter Grund für den jeweiligen Entscheidungsträger.
)
Mit Standardpython meine ich das Python das vom System benutzt wird, welches man also nicht deinstallieren könnte ohne was kaputt zu machen. Oder anders herum: Wenn man Python 2 nicht deinstallieren kann weil's vom System gebraucht wird, dann ist Python 3 noch nicht ”angekommen”. Irgendwelche Minimalsysteme die ohne Python auskommen mal ausgenommen.
Wichtig wäre beispielsweise auch gegen welches Python `mod_wsgi` vom Apache auf dem System gelinkt ist.
Die Situation bei mir: Ein paar Server laufen wohl auch auf Ubuntu aber das meiste wird irgendwas stabiles von Debian sein. Und dann gibt es immer mal wieder so etwas tolles wie CentOS wo Python 2.4! drauf läuft. Ebenso auf dem einen oder anderen NAS oder ähnlichem Gerät mit Python 2.4 oder 2.5. Und beim Grossteil der Geräte bestimmen andere was darauf läuft, beziehungsweise muss man da schon gute Gründe haben wenn man den Aufwand eines Upgrades rechtfertigen will. (Und ja, erschreckenderweise ist ein „der Support für diese Distributionsversion ist seit Jahren abgelaufen“ manchmal *kein* guter Grund für den jeweiligen Entscheidungsträger.

Sehe ich genauso wie du aber seit Arch Linux vor einigen Jahren schon genau dies gemacht hat bin ich mir da nie so ganz sicher was gemeint ist.BlackJack hat geschrieben:@DasIch: ``python`` wird hoffentlich nie ein Python 3 sein, da haben sich die Python-Entwickler ja schon zu geäussert das ``python`` immer Python 2 meint weil sonst das Chaos zu gross wird wenn in der She-Bang-Zeile ``python`` steht und man erst rätseln müsste welches Python das nun ist.
Für Ubuntu war schon bei 14.04 Ziel ohne Python 2 auszukommen. Ich weiß nicht ob es geklappt hat aber zumindest Python 3 dürfte nicht einfach deinstallierbar sein.Mit Standardpython meine ich das Python das vom System benutzt wird, welches man also nicht deinstallieren könnte ohne was kaputt zu machen. Oder anders herum: Wenn man Python 2 nicht deinstallieren kann weil's vom System gebraucht wird, dann ist Python 3 noch nicht ”angekommen”. Irgendwelche Minimalsysteme die ohne Python auskommen mal ausgenommen.
Es gibt meines Wissens zwei mod_wsgi Pakete, eines davon libapache2-mod-wsgi-py3 ist gegen Python 3.4 gelinkt.Wichtig wäre beispielsweise auch gegen welches Python `mod_wsgi` vom Apache auf dem System gelinkt ist.
Klingt als ob du von hypothetischem Python 2.8 genauso viel hättest wie von Python 3Die Situation bei mir: Ein paar Server laufen wohl auch auf Ubuntu aber das meiste wird irgendwas stabiles von Debian sein. Und dann gibt es immer mal wieder so etwas tolles wie CentOS wo Python 2.4! drauf läuft. Ebenso auf dem einen oder anderen NAS oder ähnlichem Gerät mit Python 2.4 oder 2.5. Und beim Grossteil der Geräte bestimmen andere was darauf läuft, beziehungsweise muss man da schon gute Gründe haben wenn man den Aufwand eines Upgrades rechtfertigen will. (Und ja, erschreckenderweise ist ein „der Support für diese Distributionsversion ist seit Jahren abgelaufen“ manchmal *kein* guter Grund für den jeweiligen Entscheidungsträger.)

@DasIch: Tja, ich gehe davon aus das ich noch mindestens fünf Jahre Python 2.7 als Ziel habe, mit einigen Fallbacklösungen für ältere Python's, wobei ich persönlich nur mit Bauchschmerzen etwas <2.6 unterstütze. Muss halt manchmal sein. Ich versuche auch überall wo's geht ”Druck” zu machen dass es möglichst 2.7 installiert/genutzt wird. Und ich schreibe den Quelltext dann auch so ein bisschen mit 3.x im Hinterkopf, also zum Beispiel `print_function` und `division` aus `__future__` importieren und so.
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ich nehme inzwischen nur noch Python 3. Dafür gibt es inzwischen alle Module, die ich so brauche.
Und abgesehen von "beruflichen Zwängen" sehe ich auch keine Grund, warum man noch Python 3 nehmen sollte. Als Freizeitprogrammierer so wie so nicht.
Gruß, noisefloor
ich nehme inzwischen nur noch Python 3. Dafür gibt es inzwischen alle Module, die ich so brauche.
Und abgesehen von "beruflichen Zwängen" sehe ich auch keine Grund, warum man noch Python 3 nehmen sollte. Als Freizeitprogrammierer so wie so nicht.
Gruß, noisefloor
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich sehe das genauso. IMHO kann man jeden Einsteiger zu 3 raten.noisefloor hat geschrieben:Hallo,
ich nehme inzwischen nur noch Python 3. Dafür gibt es inzwischen alle Module, die ich so brauche.
Und abgesehen von "beruflichen Zwängen" sehe ich auch keine Grund, warum man noch Python 3 nehmen sollte. Als Freizeitprogrammierer so wie so nicht.
Gruß, noisefloor
Ich selbst nehme für neues 3 und baue evtl. Den support für 2 ein. Dabei sehe ich den 2er code Zweig immer als die Ausnahme und nicht die Regel an...
@blackjack: vielleicht ist PyRun eine bessere lösung für dich , um ein aktuelles Python zu haben?
Neee, ich verstehe ihn da. Wenn du irgendwo eine RedHat-Kiste wartest, dann benutzt du das was auf der RedHat-Kiste angeboten wird um deine Scripts zu schreiben oder Programme laufen zu lassen.jens hat geschrieben:@blackjack: vielleicht ist PyRun eine bessere lösung für dich , um ein aktuelles Python zu haben?
RedHat 5 erschien irgendwann 2007 mit Python 2.6. Der Support für die Version läuft noch bis 31. März 2017. Danach wird dann RedHat 6 als älteste Distribution unterstützt. Da gibt es zwar ein Python 3 in den Repositories, aber das ist standardmäßig nicht installiert. Und Software selbst zu übersetzen (um unter RedHat 5 auf Python 2.7 zu kommen), möchte man eigentlich nicht, wenn es sich irgendwie verhindern lässt.
Und es hat sich in der Vergangenheit gezeigt, dass es immer gut ist Server eher "konservativ" mit neuen Versionen von Software zu bestücken. Versionen sind dann immer langlebig. Das darf man bei allem "Bleeding Edge" nicht vergessen.
Bei mir ist auch 2.6 das kleinste was geht. >3 noch gar nicht - aus o.g. Gründen.
@jens: Ich will gar kein ”aktuelles” Python beziehungsweise bin mit Python 2.7, wenn es das auf dem jeweiligen Zielsystem gibt, sehr zufrieden was ja mindestens bis 2020 ein *aktuelles* Python ist.
PyRun würde beim `mod_wsgi` für Apache wohl auch nicht helfen.
Ich sehe meine Aufgabe nicht darin irgendwelche Entscheidungsträger zu missionieren die mich eh nur schräg angucken würden. Im besten Fall. „Wie jetzt, (wir sollen|sie wollen) etwas installieren was nicht Standard ist auf unserem System, das kostet Zeit, und dann müssten sie Software von Python 2.7 auf Python 3 portieren, das kostet Zeit, und da treten bestimmt irgendwelche Probleme (Bugs, Regressionen, …) auf, das kostet Zeit, und das ganze bringt uns am Ende dann was? Das alles was bisher lief, im besten Fall für den Benutzer unverändert wieder läuft? Äh, what‽“ — so würde so ein Gespräch sehr wahrscheinlich ablaufen. Und das mit *vielen* verschiedenen Entscheidungsträgern in den unterschiedlichsten Firmen/Vereinen/Institutionen. Teilweise Leute bei denen man schon Probleme hat uralte Systeme für die es keine Unterstützung gibt, mal zu aktualisieren. Die Zeit stecke ich lieber in die Entwicklung von Features, das macht deutlich mehr Spass.
Edit: Plus: Ich bin mit dem Unicode-Handling von Python 3 teilweise mehr als unzufrieden. Die versuchen da POSIX-APIs die eindeutig auf Bytes ausgelegt sind mit Gewalt Unicode aufzudrücken, was mir an einigen Stellen echte Probleme bereiten würde. Zum Beispiel bei Dateinamen und Kommandozeilenargumenten.
PyRun würde beim `mod_wsgi` für Apache wohl auch nicht helfen.
Ich sehe meine Aufgabe nicht darin irgendwelche Entscheidungsträger zu missionieren die mich eh nur schräg angucken würden. Im besten Fall. „Wie jetzt, (wir sollen|sie wollen) etwas installieren was nicht Standard ist auf unserem System, das kostet Zeit, und dann müssten sie Software von Python 2.7 auf Python 3 portieren, das kostet Zeit, und da treten bestimmt irgendwelche Probleme (Bugs, Regressionen, …) auf, das kostet Zeit, und das ganze bringt uns am Ende dann was? Das alles was bisher lief, im besten Fall für den Benutzer unverändert wieder läuft? Äh, what‽“ — so würde so ein Gespräch sehr wahrscheinlich ablaufen. Und das mit *vielen* verschiedenen Entscheidungsträgern in den unterschiedlichsten Firmen/Vereinen/Institutionen. Teilweise Leute bei denen man schon Probleme hat uralte Systeme für die es keine Unterstützung gibt, mal zu aktualisieren. Die Zeit stecke ich lieber in die Entwicklung von Features, das macht deutlich mehr Spass.
Edit: Plus: Ich bin mit dem Unicode-Handling von Python 3 teilweise mehr als unzufrieden. Die versuchen da POSIX-APIs die eindeutig auf Bytes ausgelegt sind mit Gewalt Unicode aufzudrücken, was mir an einigen Stellen echte Probleme bereiten würde. Zum Beispiel bei Dateinamen und Kommandozeilenargumenten.