Wie man "Python" systemweit zu einem Alias ​​von "Python3" unter Debian macht

Sep 17 2020

Die neuesten Updates meines Debian-Testsystems haben Python Version 2 entfernt, und ich habe nur Python 3 mit installiert python3. Es ist kein Befehl mehr benannt python. Dies führt dazu, dass mehrere Skripte fehlschlagen, einschließlich mit Python 3 kompatibler Skripte.

Mich würde interessieren, was der richtige Weg ist, um global pythonals Alias ​​für zu konfigurieren python3.

Eine schmutzige Lösung wäre, so etwas manuell zu tun sudo ln -s /usr/bin/python{3,}, aber ich mache mir Sorgen, dass dies für zukünftige APT-Updates (oder eine spätere Neuinstallation von Python 2) möglicherweise nicht robust ist. Eine andere Möglichkeit besteht darin, einen Alias ​​festzulegen, der dann jedoch nur für meinen Benutzer und nicht für das gesamte System funktioniert.

Ich stelle auch fest, dass es unter Ubuntu ein Paket python-is-python3gibt, das genau dies tut, aber unter Debian gibt es kein solches Paket.

Antworten

3 StephenKitt Sep 17 2020 at 19:59

Wenn Sie sich an die Regel halten möchten, dass alles /usraußer /usr/localeinem aus einem Paket stammen soll, würde ich das python-is-python3Paket tatsächlich herunterladen und installieren. Es wird nur der /usr/bin/pythonSymlink und die erforderliche Dokumentation ausgeliefert, und es ist unwahrscheinlich, dass die Paketbeziehungen in Zukunft Probleme verursachen.

Ein Alias ​​hilft nicht bei den Shebangs Ihrer Skripte, und da die Python-Pakete keine Alternativen verwenden, wäre das Erstellen einer eigenen Alternative ( update-alternativesusw.) keine robuste Lösung.

Wenn Ihre Skripte verwendet werden /usr/bin/env python, können Sie /usr/local/binstattdessen manuell einen Link hinzufügen .

Unabhängig davon, für was Sie sich entscheiden, müssen Python-abhängige Pakete in Debian von nun an explizit python2oder python3in ihren Shebangs verwendet werden, damit Sie nicht auf Probleme stoßen, die durch Pakete aus den offiziellen Repositorys verursacht werden (in Debian 11 und höher, ausgenommen) vorerst instabil und experimentell, da diese noch alte Python-Pakete haben, die noch nicht bereinigt wurden).

2 a3nm Nov 02 2020 at 22:17

Es sieht so aus, als ob Debian jetzt python-is-python3 selbst ausliefert (in Sid und Test zum Zeitpunkt dieses Schreibens), sodass die Prämisse der Frage nicht mehr gilt und Sie einfach : sudo apt update && sudo apt install python-is-python3.