2009-12-17 6 views
6

Welche Python-Version können Sie bitte für ein Langzeitprojekt empfehlen? Sollte man 2.6+ oder 3.x verwenden ist schon stabil? (nur Standardbibliotheken sind erforderlich)Python - Soll man ein neues Projekt direkt in Python 3.x starten?

AKTUALISIERUNG: Laut den Antworten unten hat Python 3.x immer noch kritische Fehler. Siehe auch Python's list of bugs.

+2

Das Problem, wie immer, ist mit Bibliotheken von Drittanbietern. – Skilldrick

+0

"Python 3.x hat immer noch kritische Fehler"? Von den 32 als "kritisch" markierten scheinen die meisten "flockig" zu sein. Ein Speicherleck scheint tatsächlich "kritisch" zu sein. Ich denke, "kritische Fehler" könnten eine Übertreibung sein. –

Antwort

2

Ich denke, es hängt davon ab, wie genau Sie die Umgebung steuern können, in der Ihre Anwendung ausgeführt wird. Wenn Sie eine Software erstellen, in der Ihr Kunde Python zur Ausführung Ihrer Software "installiert", können Sie auch die neueste Version (Python 3.x) verwenden. Wenn Sie auf vorhandene Python-Installationen abzielen, sollten Sie die Kompatibilität mit 2.5 oder 2.6 wählen, da diese am weitesten verbreitet sind.

Python 3.x ist stabil. Das ist nicht das Problem. Das Problem damit ist Kompatibilität. Wenn Sie die Möglichkeit haben, das Neueste und Beste zu verwenden, sollten Sie die neue Version verwenden. Für neue Projekte wäre 3.x die offensichtliche Wahl.

+0

Weißt du, wird Python 3.x True unterstützen Multithreading? – psihodelia

+1

@psihodelia, wenn Sie meinen, ohne die GIL, die CPython daran hindert, Multicore-Prozessoren voll auszunutzen, ohne auf das Multiprocessing-Paket zurückzugreifen, lautet die Antwort nein, Python 3 wird das Problem AFAIK nicht beheben. –

+0

Es bedeutet, dass selbst wenn wir in N-Jahren mehrere CPUs haben, nur ein Thread Dinge auf einmal tun kann. Recht? So schlecht ... – psihodelia

0

Wenn Sie jetzt Ihr Projekt starten, und alle Bibliotheken von Drittanbietern, die Sie verwenden möchten, sind bereits nach Python 3 portiert, und Ihr Zielbetriebssystem (ich meine wirklich Linux Distribution) Pakete Python 3, dann sicher.

Gehen Sie voran, verwenden Python 3.

4

Es ist nichts falsch mit Python 3, aber viele Bibliotheken wurden noch nicht portiert. Zum Beispiel von PyGame FAQ:

Python 3 Unterstützung ist unvollständig und noch in der Entwicklungsphase

Und von NumPy:

Unterstützung für Python 3 ist geplant, aber noch nicht geplant .

Es hängt alles davon ab, wie wichtig 3rd-Party-Bibliotheken sind zu Ihnen, und ob sie noch portiert.

+1

@Skilldrick, die Python 3.0-Version hatte etwas falsch, wenn ich mich erinnere, das war eine miserable Leistung in Datei-I/O. Wenn das wahr war, wurde es vollständig in 3.1 behoben, oder gibt es immer noch ziemlich bedeutende Leistungsprobleme im Vergleich zu Python 2.x? –

+0

Nach diesem hat es: http://bugs.python.org/issue4565 – Skilldrick

+1

http://docs.python.org/3.1/whatsnew/3.1.html#optimizations –

4

Das Gute an Python3 ist, dass there is a automatic way to port your programs von Python2. Aber das Programm muss bestimmte Kriterien erfüllen.

Ich denke, der beste Ansatz für jetzt ist, Python2-Code zu schreiben und es im Python3-Testmodus zu testen (run python -3 program.py). Auf diese Weise müssen Sie sich jetzt keine Gedanken über fehlende Bibliotheken machen, und Sie können Ihr Programm in Python3 konvertieren, sobald dies sinnvoll ist.

1

THC4k mentions 2to3, und ich wollte nur darauf hinweisen, dass es auch eine 3to2 package gibt. Ich habe noch nie ein Paket benutzt, aber ich habe gehört, dass 3to2 mehr als 2to3 verzeiht.

Edit: wollte nur betonen, was andere vorgeschlagen haben: Wenn Sie einen dieser Konverter verwenden, um Ihre Software für 2.6 oder 3.0 zu veröffentlichen, werden Sie wahrscheinlich ein solides Testsystem haben wollen (unittest, Doctest, etc.) mit anständiger Testabdeckung, um nachts gut schlafen zu können!

9

diesem Grund sollten Sie Python 3.x verwenden sollten:

Python 2.x:

>>>True = False 
>>>True 
False 

Python 3.x:

>>> True = False 
    File "<stdin>", line 1 
SyntaxError: assignment to keyword 

Quelle: Strangest language feature

Vorurteil: Aber so viele Pakete sind nicht Python 3 bereit noch

Dies ist (a) nicht wahr (source) und (b) für einen Anfänger nicht wichtig.