Ist Python 3 ausgereift?

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.
friedduck
User
Beiträge: 76
Registriert: Montag 23. Juli 2012, 20:41

Donnerstag 26. Juli 2012, 08:10

Hallo Leute,

ich fange grad frisch mit Python an und habe mich gleich für die aktuellere
3er Version entschieden, war das ein Fehler?

Weil so wie ich leider feststellen muss funktionieren viele Erweiterungen nicht mit Python 3.
Ein Beispiel ist Reportlab, läuft höhsten unter Python 2.7.

Vieles muss selber kompilliert werden, ich finde das als Python Einsteiger echt zum k#####.

Die Frage ist, soll ich Python 3 einstampfen und auf 2.7 umschwenken?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Donnerstag 26. Juli 2012, 08:17

Python 3 ist ausgereift. Aber da "gut genug" der Feind des besseren ist, haben viele Anbieter von Modulen keine Lust/Zeit/Antrieb, diese zusätzlich auch für Python 3 anzubieten. Python 2.x machen sie alle. Daher musst du vorher immer gucken, ob das, was du machen willst, weitere Module benötigt und ob diese für Python 3 verfügbar sind.

Wenn du dazu keine Lust hast, nimm Python 2.7. Der Unterschied ist sehr gering. Bei Python 2.7 musst du daran denken, dass "str" nicht mehr für "richtige" Strings steht, sondern für Byte-Strings und du für Strings, die alle Zeichen aus dem Unicode-Zeichensatz enthalten können sollen, ein "u" vor einem String angeben musst. Ansonsten ist "print" keine Funktion, sondern noch eine Anweisung (was man aber mit "from __future__ import print_function" ändern kann) und noch ein paar Kleinigkeiten in der Syntax sind anders.

Stefan
friedduck
User
Beiträge: 76
Registriert: Montag 23. Juli 2012, 20:41

Donnerstag 26. Juli 2012, 12:05

Danke für die schnellen Antworten, Python 2 ist auch installiert + ein paar Module und alles ist ohne irgendwelche Fehlermeldungen durchgelaufen :)

Scheint wohl die richtige Entscheidung gewesen zu sein...
Benutzeravatar
noisefloor
User
Beiträge: 2739
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Freitag 27. Juli 2012, 07:20

Hallo,

Python3 ist defintiv die zukunft. Gut, ich habe mich selber noch nicht ernsthaft damit beschäftigt, u.a. auch wegen ReportLab (oder mangels ReportLab für Python 3.x).

Da aber so nach und nach alle (z.B. die ganzen Linux Distros) auf Python 3 als Standard umstellen oder schon umgestellt haben, ist die Zeit absehbar, wann Python 2.x nur noch auf ein paar Produktiv Serverapplikationen läuft und alles andere Python 3 ist.

Gruß, noisefloor
Benutzeravatar
jens
Moderator
Beiträge: 8487
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 27. Juli 2012, 08:58

Beim Django Project arbeiten einige wohl auch wieder am Python 3 Port. Wenn ich das richtig gelesen habe, wollen die mit hilfe von six eine Codebasis haben die dann 2 und 3 gleichzeitig unterstützt. Ich denke das ist auch der beste Weg...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Freitag 27. Juli 2012, 20:18

Ich kapiers nicht viele steigen nicht auf Python 3 um weil's nicht alle Module etc. dafür gibt, aber wenn keiner umsteigt dann rentiert es nicht nicht die Module zu Portieren und es gibt auch weiter hin nicht alles für 3.x was es für 2.x gibt.

Das erinnert mich irgendwie an diesen Börsen Crash wo auch die Leute selber schuld waren das ihre Aktien wertlos wurden.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 27. Juli 2012, 20:33

Py-Prog hat geschrieben:Ich kapiers nicht viele steigen nicht auf Python 3 um weil's nicht alle Module etc. dafür gibt, aber wenn keiner umsteigt dann rentiert es nicht nicht die Module zu Portieren und es gibt auch weiter hin nicht alles für 3.x was es für 2.x gibt.
Naja, sicherlich ist das irgend wo ein klassisches Henne-Ei-Problem. Andererseits war das ja durchaus "geplant" - so ein Umstieg findet ja nicht von heute auf morgen statt. Und im Moment passiert ja einiges, da nach Arch nun auch weitere Linux-Distros ihr Standard-Python auf Version 3 umstellen.

Und parallel kann man das ja auch schon seit längerem betreiben.
Py-Prog hat geschrieben: Das erinnert mich irgendwie an diesen Börsen Crash wo auch die Leute selber schuld waren das ihre Aktien wertlos wurden.
Na irgend wie sind es immer "Leute", die an etwas schuld sind ;-) Aber nur mal so aus Neugierde: Welchen meinst Du da genau?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
jens
Moderator
Beiträge: 8487
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 27. Juli 2012, 20:51

Dir Frage ist, ob man dadurch nicht folgern sollte, das es wenig Sinn macht "Große Umbrüche" vorzunehmen und sie besser in viele kleine unterteilen sollte...

Das Problem was ja auch irgendwie, das Python 3 zu 2 nicht so super viel zu bieten hat, das sich alle wie wild drauf gestürzt haben...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 27. Juli 2012, 20:59

jens hat geschrieben: Das Problem was ja auch irgendwie, das Python 3 zu 2 nicht so super viel zu bieten hat, das sich alle wie wild drauf gestürzt haben...
Hm... sma ist ja auch ein Kritiker dieser Vorgehensweise. Ich bin da unentschlossen - alte Zöpfe lassen sich eben nicht immer sanft kappen. Und das alte System dann zu schnell sterben zu lassen ist dann auch nicht wirklich sinnvoll. Aber diese Diskussion ist ja nun schon so oft geführt worden...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Freitag 27. Juli 2012, 21:07

Hyperion hat geschrieben:Na irgend wie sind es immer "Leute", die an etwas schuld sind ;-) Aber nur mal so aus Neugierde: Welchen meinst Du da genau?
Ich meine den da wo die Leute Angst hatten das die Aktien wertlos werden und dann alle verkauft hatten und dadurch verloren dann auch alle Aktien ihren wert. Wenn aber alle ihre Aktien Behalten hätten wäre gar nichts passiert ...

Wann das war weiß ich zwar nicht, aber es ist doch viel wichtiger das man weiß was passiert ist und warum und nicht wann.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
lunar

Freitag 27. Juli 2012, 21:23

@Hyperion: Also, manche entwickeln noch mit Visual C++ 6(!), und dabei hat C++/CLI demgegenüber eine Menge zu bieten, den VC++ ist richtig alt (locker zehn Jahre älter als Python 3) und richtig schlecht (MFC anyone?) :) Insofern glaube ich nicht, dass da irgendein Zusammenhang besteht zwischen Umfang der Änderungen und Annahme durch die Community…
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 27. Juli 2012, 22:03

@lunar: Naja, das sehe ich doch genauso ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Sonntag 29. Juli 2012, 12:15

sma hat geschrieben:Python 3 ist ausgereift. Aber da "gut genug" der Feind des besseren ist, haben viele Anbieter von Modulen keine Lust/Zeit/Antrieb, diese zusätzlich auch für Python 3 anzubieten. Python 2.x machen sie alle. Daher musst du vorher immer gucken, ob das, was du machen willst, weitere Module benötigt und ob diese für Python 3 verfügbar sind.

Wenn du dazu keine Lust hast, nimm Python 2.7. Der Unterschied ist sehr gering. Bei Python 2.7 musst du daran denken, dass "str" nicht mehr für "richtige" Strings steht, sondern für Byte-Strings und du für Strings, die alle Zeichen aus dem Unicode-Zeichensatz enthalten können sollen, ein "u" vor einem String angeben musst. Ansonsten ist "print" keine Funktion, sondern noch eine Anweisung (was man aber mit "from __future__ import print_function" ändern kann) und noch ein paar Kleinigkeiten in der Syntax sind anders.

Stefan
Immer wenn ich externe Module nutzen will, sind sie nur für 2.x verfügbar. Von ausgereift kann also keine Rede sein. Ich finde man muss da schon die Sprache als ganzes mit all seinen Abhängigkeiten betrachten und nicht nur den Kern.
noisefloor hat geschrieben: Python3 ist defintiv die zukunft. Gut, ich habe mich selber noch nicht ernsthaft damit beschäftigt, u.a. auch wegen ReportLab (oder mangels ReportLab für Python 3.x).
Python 3.x ist ganz sicher nicht die Zukunft.
noisefloor hat geschrieben: Da aber so nach und nach alle (z.B. die ganzen Linux Distros) auf Python 3 als Standard umstellen oder schon umgestellt haben, ist die Zeit absehbar, wann Python 2.x nur noch auf ein paar Produktiv Serverapplikationen läuft und alles andere Python 3 ist.
An Hochschulen wurde in meinem Umfeld immer nur mit Python 2.x gearbeitet. Ich sehe eher eine permanente Spaltung. Auf der einen Seite Distros mit 3.x, auf der anderen Seite viele wichtige Module exklusiv für 2.x.



Kurzum die Entwickler und der Diktator sind ihren Pflichten nicht gerecht geworden. Man hatte keine Konzepte, es nicht zu einer Spaltung kommen zu lassen.

Und erzählt mir nicht, wer angeblich alles wieder an einem Port arbeitet, die Diskussion wird doch jedes Jahr geführt. :) Python 3k (lol 3k) war 2008! Das ist fast 4 Jahre her.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 29. Juli 2012, 12:31

bremer hat geschrieben: Immer wenn ich externe Module nutzen will, sind sie nur für 2.x verfügbar.
Kannst Du uns da mal Beispiele geben? Evtl. hast Du eben "Pech", dass Du in Bereichen arbeitest, für die Python3 eben noch nicht geeignet ist.
bremer hat geschrieben: Von ausgereift kann also keine Rede sein. Ich finde man muss da schon die Sprache als ganzes mit all seinen Abhängigkeiten betrachten und nicht nur den Kern.
Öh... und wie kann man *externe* Entwickler zwingen, ihre Module gefälligst im Vorfeld auf eine neue Sprachversion zu portieren? Das kann ja nicht einmal Microsoft... und .NET ist ja nun auch schon >10 Jahre alt...
bremer hat geschrieben: Python 3.x ist ganz sicher nicht die Zukunft.
Weil...?

Es wird ja kein Python 2.8 mehr geben - auf lange Sicht wird der 2er Zweig eben sterben. Natürlich kann das noch Jahre dauern - analog zu Linux. Den 2.4er Kernel nutzen sicherlich auch noch Leute. Die Mehrheit der Anwender dürfte mittlerweile doch schon bei 2.6 oder gar 3.x sein.
bremer hat geschrieben: An Hochschulen wurde in meinem Umfeld immer nur mit Python 2.x gearbeitet.
Ah ja... *wurde* ist Dir selber schon aufgefallen? ;-) So eine Umstellung ist immer ein *Prozess*, kein Quantensprung ;-)
bremer hat geschrieben: Ich sehe eher eine permanente Spaltung. Auf der einen Seite Distros mit 3.x, auf der anderen Seite viele wichtige Module exklusiv für 2.x.
Nö. Das ist eben der *Prozess*, eine Art "wechselseitiges Hochschaukeln". Je mehr Module für Python3 verfpgbar sind, desto mehr Entwickler werden umsteigen. Je mehr Distros Python3 per default nutzen, desto mehr sind die Entwickler von Modulen motiviert, ihre Software zu portieren. Da man problemlos beide Varianten parallel nutzen kann, sind doch viele Probleme gar nicht wirklich existent.
bremer hat geschrieben: Kurzum die Entwickler und der Diktator sind ihren Pflichten nicht gerecht geworden. Man hatte keine Konzepte, es nicht zu einer Spaltung kommen zu lassen.
Zum einen kann imho nicht von Spaltung die Rede sein und zum anderen: Wie hättest Du das denn verhindert? Das würde mich doch mal brennend interessieren.
bremer hat geschrieben: Und erzählt mir nicht, wer angeblich alles wieder an einem Port arbeitet, die Diskussion wird doch jedes Jahr geführt. :) Python 3k (lol 3k) war 2008! Das ist fast 4 Jahre her.
Ja und? Es gibt auch noch jede Menge C-Programme, die kein C99 unterstützen - das ist sogar 13 Jahre her! Wo ist das Problem? Selbst Java wird ja noch in 1.4 eingesetzt (VW anyone?) und da war der Sprung auf 1.5 (aka Java 5) Gold wert, vermutlich sogar mehr als bei Python2 auf 3. (Wobei dort imho der Fehler gemacht worden ist, die Versionen kompatibel zu halten... dadurch hat man sich die suboptimalen Generics eingehandelt...)

BTW: Weiß jemand, ob Microsoft die binäre Abwärtskompatibilität für ihre Genereics in .NET geopfert haben? Die kamen afair doch auch erst später dazu? Als Laie im Bereich Kompiler-KnowHow würde ich naiv annehmen, dass das anders gar nicht geht - aber vielleicht irre ich da ja auch.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten