Faut-il utiliser python 2.6 ou 2.7 ou 3.x? [fermé]

25

La version de python que j'utilise est 2.6 , et il y a 2.7 et 3.x. Habituellement, j'utilise python pour certains programmes / extraits triviaux. Je me rends compte qu'il existe des différences majeures entre 2.x et 3.x. J'aimerais vraiment savoir, si je vais faire un plus gros projet avec python, quelle version de python dois-je utiliser?

Dois-je passer à 2.7, ou passer à 3.x ou rester avec 2.6?

La décision doit être basée sur ces termes:

  1. Nombre d'utilisateurs d'Internet en tant que communauté. Plus d'utilisateurs signifient plus de packages open source et d'aide de leur part.

  2. Fonctionnalité.

  3. Support de l'équipe de développement officielle.

  4. Compatibilité pour le module / package existant.

Merci!

lamwaiman1988
la source
5
Quelqu'un peut-il signaler des modifications bénéfiques apportées par python 3.x?
lamwaiman1988
1
Vous mentionnez que vous savez que la compatibilité avec les modules existants est un problème, mais vous ne nous dites pas sur quels modules existants votre code dépend. Cette question est à peu près sans réponse.
Wooble
2
hors sujet; recommandations ET gorille vs requin en une seule question wow!
3
Cette question et ses réponses ne seront utiles que pour une petite fenêtre de temps. Ce qui a du sens maintenant pourrait ne plus avoir de sens dans un an, car 3.x deviendra plus mature.
Bryan Oakley
Notant que (a) la question est toujours pertinente en 2014 (par exemple RobotFramework ne fonctionne pas avec Python 3) et (b) la fermeture de cette question maintient cette page obsolète parce que - même si elle arrive en tête des résultats de recherche google - de nouvelles réponses ne peut pas être affiché.
Bob Stein

Réponses:

27

Je suggérerais moi-même Python 2.7. Il s'agit de la dernière version de la série Python 2.x. La plupart des modules Python sont conçus pour fonctionner avec Python 2.x. Il y a un mouvement pour essayer de passer à Python 3, mais tous les modules Python 3 sont écrits pour 2 et 3. N'oubliez pas de ne pas utiliser les anciennes fonctionnalités qui ne sont pas disponibles dans Python 3, de sorte que vous pouvez simplement 2to3 votre code pour le faire fonctionner sur Python 3.

Si vous optez pour Python 3, vous êtes l'un des premiers à adopter et vous devrez probablement dire aux autres de télécharger Python 3 (beaucoup d'ordinateurs n'auront que Python 2). D'un autre côté, de nouvelles fonctionnalités ne vont arriver qu'à Python 3. Python 2 est en permanence en maintenance. Je ne suggère donc pas de continuer à utiliser Python 2 dans 10 ans.

Si vous souhaitez garder un œil sur les packages Python et leur compatibilité avec Python 3, vous pouvez garder un œil sur ce site: http://python3wos.appspot.com/

jsternberg
la source
django ne prend pas en charge 3.x? Donc, l'utilisateur familier avec django ne peut tout simplement pas utiliser 3.x?
lamwaiman1988
hé normalement, quand une nouvelle version est publiée, cela signifie qu'elle est meilleure que la précédente. Et pourquoi python sort-il dans la série 2.x et un autre dans la série 3.x? Quelle est la différence réelle en eux.
HOT
4
Python 3 a apporté des modifications au langage qui sont bénéfiques, mais elles ne sont pas rétrocompatibles avec certaines des fonctionnalités de Python 2. Donc, certaines choses ont été supprimées et d'autres ajoutées (et les choses supprimées les rendent non compatibles).
jsternberg
+1 pour 2,7, meilleur rapport de compatibilité (au moins pour les bibliothèques que j'utilise) jusqu'à ce que 3 soit plus répandu
wildpeaks
@Ashinkn Les modifications peuvent être trouvées ici docs.python.org/3.0/whatsnew/3.0.html . Le changement majeur de rupture de compatibilité étant le passage de l'utilisation d'Unicode (par opposition à ASCII) comme type de chaîne par défaut. Où les gens utilisaient des chaînes comme octet [] avant qu'il y ait un nouveau type de tableau des octets qui est utilisé à la place. De plus, toute chaîne 2x explicitement définie comme unicode doit être remplacée par des chaînes régulières.
Evan Plaice
19

Mon avis est que nous devons commencer à amener les gens vers Python 3 et s'il y a des bibliothèques qui ne sont pas compatibles avec Python 3, nous devons commencer à faire en sorte que ce ne soit pas le cas.

Python 3 est l'avenir du langage, et plus nous écrivons de code en l'utilisant, mieux c'est.

Musaab
la source
Ce dont nous avons besoin, c'est d'un interpréteur unique compatible avec les deux versions de python et capable de les analyser intelligemment. Autrement dit, ledit interprète compilerait à la fois python2 et python3 dans le même bytecode afin qu'ils soient compatibles, ce qui permettrait d'utiliser python3 avec une bibliothèque python2. Si C, C ++ et Java peuvent le faire, Python aussi.
Braden Best
4

Django prend désormais en charge "expérimentalement" Python 3.2+ comme vous pouvez le voir sur leurs publications ici .

Compte tenu de cela, et du fait que Python 3.x est l'avenir du langage, je dirais que Python 3 est le meilleur maintenant.

CorayThan
la source
2

Pour chaque projet, vérifiez si toutes les bibliothèques requises pour un projet ont déjà pris en charge python 3.x, puis utilisez python 3.x car c'est futur et c'est la dernière version stable officielle.

Sinon, utilisez tout ce dont vous avez besoin pour la compatibilité de la bibliothèque.

cnd
la source
2

Peu importe que vous utilisiez Python 2.7 ou Python 3 Si vous n'utilisez pas les anciennes fonctionnalités de Python 2.7, vous pouvez simplement 2to3 votre code pour le faire fonctionner sur Python 3.

Ramchandra Apte
la source
0

J'étais dans le même bateau auparavant et c'est ce que j'ai trouvé. Python 2.6, 2.7 et 3.2 peut être installé côte à côte à l'aide de MacPorts et peut facilement être changé. (Je suis un utilisateur Mac). Recherchez des alternatives à Macports pour votre plateforme.

ThinkCode
la source
0

Jusqu'à ce qu'un pont soit développé intrinsèquement dans 3.x pour permettre l'utilisation transparente de 2,7 packages, un mouvement est lourd de dangers car le langage est vraiment tout ce qui y a été contribué. Les considérations formelles et la pureté sont négligeables en comparaison. Un tel pont transparent ne risque pas de se produire par entêtement pédant et par mépris pour la base d'utilisateurs.

Don Gateley
la source
Un tel pont transparent est inaccessible. Les packages 2to3 et six offrent un pont suffisant, mais sont loin d'être transparents.
Martijn Pieters