Question:
Avons-nous besoin de plusieurs versions de Python?
SteveIrwin
2012-10-10 03:06:10 UTC
view on stackexchange narkive permalink

Je suis nouveau sur Linux et en parcourant mon dossier installé, je peux voir qu'il y a quatre dossiers Python différents dans la liste des répertoires.

pythonpython2.7python3python3.2

Avons-nous besoin des quatre versions ou devrais-je supprimer les autres et ne conserver que la dernière?

De plus, les anciennes versions ne sont-elles pas supprimées automatiquement lorsque de nouvelles versions sont installées comme dans Windows?

Quelle distribution et quel est le chemin? Certaines applications dépendent toujours de `python2.7`, alors méfiez-vous de la suppression.
J'utilise debian et le chemin est / etc
`/ etc` n'est pas le chemin d'installation des applications. C'est là que la configuration est stockée. Ne plaisante pas avec les trucs là-dedans.
L'une des raisons des multiples versions est que la version 3 a introduit des modifications non rétrocompatibles et a cassé certaines fonctionnalités existantes.
Je veux le supprimer car il prend beaucoup de place sur les cartes SD et les sauvegardes. Un de ces jours, je vais mettre en place un système sacrificiel et le supprimer juste pour voir la différence dans l'utilisation de l'espace et s'il casse quoi que ce soit.
@SDsolar Il casse des choses; vous pouvez voir quoi en exécutant `aptitude` et en effectuant une suppression (simulée!) en trouvant` python` et en appuyant sur `-`.
Quatre réponses:
#1
+8
scruss
2012-10-10 05:03:12 UTC
view on stackexchange narkive permalink

Si vous regardez dans / usr / bin , il n'y a en fait que deux versions installées:

  $ ls -la / usr / bin / python * lrwxrwxrwx 1 root root 9 juin 5 23:08 / usr / bin / python -> python2.7-rwxr-xr-x 1 root root 2679344 6 mai 19:31 /usr/bin/python2.7lrwxrwxrwx 1 root root 9 août 2 18: 04 / usr / bin / python3 -> python3.2lrwxrwxrwx 1 racine racine 11 juillet 6 09:52 /usr/bin/python3.2 -> python3.2mu-rwxr-xr-x 1 racine racine 2612900 6 juillet 09:52 / usr / bin / python3.2mulrwxrwxrwx 1 root root 11 août 2 18:04 / usr / bin / python3mu -> python3.2mu  

Les entrées marquées l au début sont des liens; ce sont juste des pointeurs vers des fichiers exécutables.

Comme cela a déjà été dit, vous avez besoin des deux versions et ne vous embêtez pas avec des choses là-dedans ...

Quel est le `mu` sur` python3.2mu`?
@AlexChamberlain - D'après [pep-3149] (http://www.python.org/dev/peps/pep-3149/), le `m` montre qu'il a été compilé avec le drapeau` --with-pymalloc`, tandis que le `u` montre qu'il a été compilé avec le drapeau` --with-wide-unicode`.
@scruss - Pour être complet, vous voudrez peut-être mentionner que les entrées `l` sont des [liens symboliques] (http://en.wikipedia.org/wiki/Symbolic_link).
@MarkBooth, ouais, je l'ai dit dans la réponse originale
Non, réponse originale le 10 octobre 12 à 0:03, mon commentaire était à 9:37 et votre modification était à 11:33. Vous auriez pu simplement signaler mon commentaire comme obsolète.
#2
+3
Krzysztof Adamski
2012-10-10 11:00:54 UTC
view on stackexchange narkive permalink

Python 3 est une mise à niveau rétrocompatible du langage. Comme déjà mentionné, tant de choses ont changé, que la plupart des programmes ne fonctionneront pas sur Python 3 sans modifications. Pire encore, de nombreuses bibliothèques Python ne sont pas encore compatibles avec Python 3.

C'est pourquoi au moins deux versions sont nécessaires: l'héritage Python 2.x et le nouveau Python 3.x. C'est exactement ce que vous avez sur les systèmes Debian. Vous avez 4 chemins différents que vous pouvez utiliser pour exécuter Python:

  • python2.7 - c'est la version 2.7 de Python, la dernière version de la ligne 2.x.
  • python3.2 - c'est la version 3.2 de Python, la dernière version de la ligne 3.x disponible dans Debian (la 3.3 n'est pas encore disponible).
  • python - c'est un interpréteur python par défaut. C'est un lien symbolique vers une version considérée par défaut. Actuellement - dans Debian - c'est toujours Python 2 donc il pointe vers 2.7.
  • python3 - c'est l'interpréteur Python 3 le plus à jour disponible dans Debian. Actuellement, il est lié à une version 3.2 de l'interpréteur.

Conclusion

De nombreux paquets dépendent de Python 2.x donc vous ne devez pas le supprimer. Il se peut que certains packages dépendent de Python 3.x, donc vous ne voulez probablement pas supprimer celui-ci.

Je sais que c'est vrai pour Python 2.7 mais je ne suis au courant de rien qui échoue si Python 3 est supprimé. Je sens une expérience se produire. Ce serait bien d'avoir des sauvegardes rsync complètes plus petites si possible.
#3
+2
John La Rooy
2012-10-10 07:27:13 UTC
view on stackexchange narkive permalink

Python3 n'est pas vraiment une mise à jour de Python2. Seuls les programmes triviaux fonctionneront sans au moins être exécutés via 2to3.

En revanche, lorsqu'il y a des mises à jour mineures, par exemple 2.7.2 -> 2.7.3, la 2.7 sera mise à jour vers la nouvelle version et le plus ancien est supprimé. Ceci est généralement correct car il n'est pas censé y avoir de modifications incompatibles en arrière (je ne dirai pas que cela ne s'est jamais produit cependant)

Vous ne verrez généralement pas, disons 3.3, ajouté au référentiel entre les versions, mais quand il apparaîtra et que vous mettez à niveau, le 3.2 restera installé au cas où vous dépendriez de cette version spécifique. Le code Python pur qui s'exécute sur 3.2 devrait être généralement correct sur 3.3, mais les bibliothèques C peuvent ne pas fonctionner sans être reconstruites.

#4
  0
SDsolar
2017-08-17 05:48:56 UTC
view on stackexchange narkive permalink

La réponse à la dernière partie de votre question, "Les anciennes versions ne sont-elles pas supprimées automatiquement lorsque de nouvelles versions sont installées comme dans Windows?"

La réponse est un non clair et catégorique.

Les anciennes versions ne sont pas supprimées lorsque de nouvelles versions sont installées.

Une trop grande partie de notre écosystème logiciel a été construite sur Python 2.x pour qu'il soit extensible. Le supprimer casserait beaucoup de nos commandes.

De plus, Python 3 offre très peu de choses intéressantes pour le programmeur Python 2.7. Si vous trouvez que vous avez besoin de ces fonctionnalités, vous avez la possibilité d'utiliser Python3. Sinon, les gens comme moi resteront avec Python 2.x

Comme cela a été mentionné dans les autres réponses, ils ne sont plus vraiment le même langage.

C'est comme la différence entre les programmes qui pourraient fonctionner avec Windows 98 mais ne pourraient pas fonctionner sous Windows 2000. Les programmes que vous utilisiez sous Win98 ont dû être réédités après avoir été compilés pour 2000 ( 32 bits). Windows 2000 n'a pas pris son envol sur le marché grand public car il obligerait ces consommateurs à acheter à nouveau leurs produits préférés. Ce n'est qu'avec Windows XP qu'ils ont finalement réussi à faire fonctionner les programmes des deux types sous le même système d'exploitation Windows. Nous avons la chance que Microsoft ait appris de cette leçon et que les programmes 32 bits et 64 bits peuvent tous deux être exécutés sur n'importe quelle version moderne de Windows.

Revenez à la question dans votre titre, "Avons-nous besoin de plusieurs versions de Python?" - cela dépend du logiciel que vous souhaitez utiliser. Un exemple remarquable est le flightgear. Sans Python3, il ne fonctionnera pas.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...