Beachten Sie, dass ich diese Antwort nicht mehr aktualisiere. Ich habe auf meiner persönlichen Website unter http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html viel mehr Fragen und Antworten zu Python 3
Vorherige Antwort:
(Statusaktualisierung, September 2012)
Wir (dh die Python-Kernentwickler) haben bei der Veröffentlichung von Python 3.0 vorausgesagt, dass es ungefähr 5 Jahre dauern würde, bis 3.x die "Standard" -Option für neue Projekte gegenüber der 2.x-Serie wird. Diese Vorhersage ist der Grund, warum der geplante Wartungszeitraum für die Version 2.7 so lang ist.
Die ursprüngliche Version von Python 3.0 hatte auch einige kritische Probleme mit schlechter E / A-Leistung, die es für die meisten praktischen Zwecke praktisch unbrauchbar machten. Daher ist es sinnvoller, die Zeitleiste ab der Veröffentlichung von Python 3.1 Ende Juni 2009 zu starten E / A-Leistungsprobleme sind auch der Grund, warum es keine 3.0.z-Wartungsversionen gibt: Es gibt keinen guten Grund, warum sich jemand für ein Upgrade auf 3.1 auf 3.0 entscheiden sollte.
Zum Zeitpunkt des Redaktionsschlusses (September 2012) bedeutet dies, dass wir uns derzeit etwas mehr als drei Jahre im Übergangsprozess befinden und dass die Prognose weiterhin auf Kurs zu sein scheint.
Während die Menschen die Eingabe einer Python - 3 - Code werden die meisten regelmäßig wie von syntaktischen Änderungen gebissen print
werden eine Funktion, dass eigentlich kein Aufwand für Bibliothek Portierung ist , weil die automatisierte 2to3
Umwandlung Werkzeug , um es ganz glücklich behandelt.
Das größte Problem in der Praxis ist tatsächlich ein semantisches: In Python 3 können Sie nicht so schnell und locker mit Textcodierungen spielen wie in Python 2. Dies ist sowohl der größte Vorteil gegenüber Python 2 als auch die größte Hürde bei der Portierung: Sie müssen die Probleme bei der Unicode-Verarbeitung beheben , damit ein Port ordnungsgemäß funktioniert (während in 2.x viele dieser Codes im Hintergrund falsche Daten mit erzeugten) Nicht-ASCII-Eingaben, die den Eindruck erwecken, zu arbeiten, insbesondere in Umgebungen, in denen Nicht-ASCII-Daten selten sind).
Sogar die Standardbibliothek in Python 3.0 und 3.1 hatte noch Probleme mit der Unicode-Verarbeitung, was es schwierig machte, viele Bibliotheken zu portieren (insbesondere solche, die sich auf Webdienste beziehen).
3.2 behandelte viele dieser Probleme und bot Bibliotheken und Frameworks wie Django ein viel besseres Ziel. 3.2 brachte auch die erste funktionierende Version von wsgiref
(der Hauptstandard für die Kommunikation zwischen Webservern und in Python geschriebenen Webanwendungen) für 3.x, die eine notwendige Voraussetzung für die Übernahme in den Webspace war.
Key Abhängigkeiten wie NumPy und SciPy haben jetzt portiert, Installation und Abhängigkeitsmanagement - Tools wie zc.buildout
, pip
und virtualenv
für 3.x zur Verfügung stehen, unterstützt die Pyramide 1.3 Release Python 3.2, die kommende Django 1.5 Release experimentelle Python 3 Unterstützung umfasst, und die Freisetzung von 12,0 Das Twisted-Networking-Framework hat die Unterstützung von Python 2.5 eingestellt, um den Weg für die Erstellung einer Python 3-kompatiblen Version zu ebnen.
Zusätzlich zu den Fortschritten bei den Python 3-Kompatibilitätsbibliotheken und -Frameworks arbeitet die beliebte, mit JIT kompilierte PyPy-Interpreter-Implementierung aktiv an der Python 3-Unterstützung.
Die Tools zur Verwaltung des Migrationsprozesses wurden ebenfalls deutlich verbessert. Zusätzlich zu dem 2to3
Tool, das im Rahmen von CPython bereitgestellt wird (das jetzt als am besten geeignet für einmalige Konvertierungen von Anwendungen angesehen wird, die keine Unterstützung für die 2.x-Serie benötigen), gibt es auch ein Tool python-modernize
, das die 2to3
Infrastruktur als Ziel verwendet Die (große) gemeinsame Teilmenge von Python 2 und Python 3. Dieses Tool erstellt eine einzige Codebasis, die mit Hilfe der six
Kompatibilitätsbibliothek sowohl auf Python 2.6+ als auch auf Python 3.2+ ausgeführt werden kann . Die Python - Version 3.3 beseitigt auch eine der Hauptursachen für „Rauschen“ der vorhandenen Unicode - fähige Anwendungen migrieren: Python 3.3 noch einmal den ‚u‘ Präfix für Stringliterale unterstützt (es eigentlich nicht tunalles in Python 3 - es ist nur versehentlich zu vermeiden restauriert machen zu Python 3 Migration schwieriger für Benutzer, die bereits korrekt ausgezeichnet hatten ihren Text und binäre Literale in Python 2).
Wir sind also ziemlich zufrieden mit dem Fortschritt der Dinge - es sind noch fast zwei Jahre bis zu unserem ursprünglichen Zeitrahmen vergangen, und die Veränderungen ziehen sich gut durch das gesamte Python-Ökosystem.
Da viele Projekte ihre Python-Paketindex-Metadaten nicht ordnungsgemäß kuratieren und einige Projekte mit weniger aktiven Betreuern die Python 3-Unterstützung hinzugefügt haben, geben rein automatisierte PyPI-Scanner immer noch eine zu negative Sicht auf den Status der Python 3-Bibliothek Unterstützung.
Eine bevorzugte Alternative zum Abrufen von Informationen zum Python 3-Support unter PyPI ist http://py3ksupport.appspot.com/.
Diese Liste wird von Brett Cannon (einem langjährigen Python-Kernentwickler) persönlich kuratiert, um falsche Projektmetadaten, Python 3-Unterstützung, die sich in Tools zur Versionskontrolle, aber noch nicht in einer offiziellen Version befindet, und Projekte mit aktuelleren Gabeln zu berücksichtigen oder Alternativen, die Python 3 unterstützen. In vielen Fällen fehlen den Bibliotheken, die noch nicht in Python 3 verfügbar sind, Schlüsselabhängigkeiten und / oder die fehlende Python 3-Unterstützung in anderen Projekten verringert die Benutzeranforderung (z. B. wenn das Django-Kernframework in verfügbar ist) Mit Python 3, verwandten Tools wie South und Django-Sellerie, wird eher Python 3-Unterstützung hinzugefügt, und die Verfügbarkeit von Python 3-Unterstützung in Pyramid und Django erhöht die Wahrscheinlichkeit, dass Python 3-Unterstützung in anderen Tools wie gevent implementiert wird.
Die Website unter http://getpython3.com/ enthält einige hervorragende Links zu Büchern und anderen Ressourcen für Python 3, zeigt einige wichtige Bibliotheken und Frameworks auf, die Python 3 bereits unterstützen, und bietet Informationen dazu, wie Entwickler finanzielle Unterstützung von der anfordern können PSF beim Portieren von Schlüsselprojekten nach Python 3.
Eine weitere gute Ressource ist die Community-Wiki-Seite zu Faktoren, die bei der Auswahl einer Python-Version für ein neues Projekt zu berücksichtigen sind: http://wiki.python.org/moin/Python2orPython3