57 votes

Paquet Python-is-python3 dans Ubuntu 20.04 - qu'est-ce que c'est et que fait-il réellement ?

Après avoir utilisé Ubuntu 18.04 pendant une poignée d'années et lu que Python 2 avait été supprimé d'Ubuntu 20.04, j'avais hâte d'utiliser les commandes suivantes python ou pip plutôt que python3 ou pip3 . Donc aujourd'hui, j'ai essayé Ubuntu 20.04 pour la première fois, et j'ai trouvé :

$ python --version

Command 'python' not found

$ python3 --version
Python 3.8.5

J'ai été surpris et, en approfondissant mes recherches, j'ai découvert ce qui suit au sujet du colis python-is-python3 :

https://packages.ubuntu.com/focal/Python-is-python3

https://launchpad.net/ubuntu/focal/+package/Python-is-python3

Comment faire en sorte que la commande du programme 'Python' exécute Python 3 ?

Le milieu de ces 3 liens est le plus descriptif, mais aucun n'est particulièrement clair sur ce qu'il faut faire. python-is-python3 est/fait et toute la portée des ramifications si sudo apt-get install python-is-python3 devait être exécuté sur une installation Ubuntu 20.04.

Voici quelques questions que je me pose sur python-is-python3 :

  1. Est python-is-python3 propriétaire à Ubuntu/Canonical ? Si oui, les autres distributions Linux utilisent-elles python-is-python3 également ou d'autres distributions ont-elles un équivalent similaire ?

  2. Je crois que si je devais courir python-is-python3 à partir de l'invite de commande, je pourrais alors utiliser la commande python 代わりに python3 . Premièrement, quelqu'un peut-il le confirmer, et deuxièmement, en va-t-il de même pour pip es decir pip 代わりに pip3 ?

  3. Le lien launchpad.net ci-dessus mentionne la création d'un lien symbolique. Est-ce que python-is-python3 vraiment juste créer un lien symbolique unique ? Il semble étrange d'introduire un paquet pour un objectif aussi basique. De plus, si ce paquet est ensuite désinstallé ( i.e. sudo apt --purge remove python-is-python3 ) est-ce que cela supprime le lien symbolique ?

  4. Existe-t-il encore des paquets Python 2 couramment utilisés ? Je n'en vois aucun au hasard.

  5. Est-ce que quelqu'un a couru python-is-python3 et l'a regretté plus tard pour une raison qui n'avait pas été prévue à l'avance ?

  6. Il semble que l'avantage de courir python-is-python3 serait de ne pas avoir à ajouter le 3 à la fin des commandes Python, mais l'inconvénient est que vous auriez alors une configuration Ubuntu non standard. python-is-python3 avantage/inconvénient ?

42voto

IMSoP Points 1099

Comme La description de l'emballage que vous avez mentionnée indique :

Dans Ubuntu, tous les paquets Python utilisent l'interpréteur explicite python3 ou python2 et n'utilisent pas du tout le paquet non versionné /usr/bin/Python ... Aucun paquet ne peut déclarer de dépendance à ce paquet.

Ainsi, tous les paquets officiels Ubuntu dépendront explicitement de "python2" ou "python3", et invoqueront la commande appropriée. La commande "Python" par défaut est délibérément indéfinie de sorte que tout scripts la référençant doit être mis à jour pour dépendre sans ambiguïté d'une version ou l'autre.

Cependant, utilisateurs peuvent avoir du code qui dépend de la disponibilité de la commande "Python" et savent qu'ils peuvent la pointer en toute sécurité. dans l'ensemble de leur système à l'une ou l'autre version. Le site python-is-python3 (et son homologue, python-is-python2 ) sont un moyen pratique de mettre en place un lien symbolique à cette fin.

Python-is-python3 ne crée-t-il vraiment qu'un seul lien symbolique ? Il semble étrange d'introduire un paquet pour un objectif aussi basique.

Les distributions Linux sont des systèmes extrêmement complexes constitués d'un grand nombre de composants simples. La puissance des gestionnaires de paquets réside dans leur flexibilité à faire des choses simples comme celles-ci de manière unifiée. Par exemple, une configuration de serveur script pourrait avoir une longue liste de apt les paquets dont une application a besoin pour être installée, et peuvent simplement inclure python-is-python3 dans cette liste. L'envoi d'un paquet à cette fin est beaucoup plus simple que d'avoir un guide de l'utilisateur expliquant comment gérer manuellement le lien symbolique.

Est-ce qu'il en va de même pour pip es decir pip 代わりに pip3 ?

Apparemment non, selon ce bug du LaunchPad le python3 Le paquet pointe automatiquement pip à l'adresse pip3 de toute façon.

Si vous ouvrez le .deb pour le paquet (j'ai utilisé 7-Zip), vous pouvez voir qu'à part une documentation, il ne contient qu'un lien symbolique, à installer à l'adresse /usr/bin/python en pointant du doigt /usr/bin/python3 .

20voto

karel Points 97032

Dans Ubuntu, tous les paquets Python utilisent l'interpréteur explicite python3 ou python2 et n'utilisent pas les versions non versionnées de l'interpréteur. /usr/bin/python du tout. Certains codes tiers sont maintenant principalement basés sur python3, mais peuvent utiliser /usr/bin/python .

Python-is-python3 est un paquetage de commodité qui fournit un lien symbolique permettant de pointer vers l'interface utilisateur de Python. /usr/bin/python à l'interpréteur python3 par défaut actuel. Cela peut améliorer la compatibilité avec d'autres systèmes modernes, tout en cassant certains logiciels obsolètes ou tiers.

Python-is-python3 remplace : Python, Python-is-python2.

J'ai installé Python-is-python3 en tant que paquet de commodité dans Ubuntu 20.04, mais je l'ai ensuite désinstallé après que python2.7 ait été automatiquement installé comme dépendance d'un autre paquet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X