Ich habe python2.7 und pyhton3.5 mit apt-get installiert.
In meiner .bashrc muss ich alias python=python3
python3 als Standard festlegen. Dies funktioniert, wenn ich Python nur direkt ausführe, aber es scheint nicht mit / usr / bin / env zu funktionieren.
Wie kann ich in diesem Fall python3 erzwingen?
$ python --version
Python 3.5.2
$ /usr/bin/env python --version
Python 2.7.12
command-line
bash
python
r03
quelle
quelle
python3
stattdessen Python eingeben, also können Sie im Skript#!/usr/bin/env python3
Antworten:
Das
env
liegt daran, dass Siepython
in IhrerPATH
, nicht in einer eingebauten Shell, einem Alias oder einer Funktion suchen . Wie Sie festgelegt haben ,python
wiepython3
als Alias,env
wird es nicht finden, wird es die Suche durchPATH
und lösenpython
zu/usr/bin/python
(das istpython2
).Sie können alle verfügbaren Speicherorte der ausführbaren Datei
python
inbash
: do überprüfen :Sie haben kein Glück, wenn Sie einen Alias in Shebang verwenden möchten, da Shebang per Definition ein vollständiger Pfad zur ausführbaren Interpreter-Datei sein muss, den Sie bei der Verwendung
env
auflösen sollten . Um das Skript mit dem Shebang zu interpretieren :python
/usr/bin/env python
python3
quelle
virtualenv
stattdessen zu.Angesichts der Anzahl der Skripte, die / usr / bin / env Python aufrufen und Python 2 erwarten, ist es wahrscheinlich eine schlechte Idee, Python tatsächlich Python 3 zu sein.
Wie Benny in einem Kommentar sagte,
/usr/bin/env python3
ist die richtige Lösung.quelle
Ich habe eine bessere Lösung gefunden als die hier veröffentlichten: http://redsymbol.net/articles/env-and-python-scripts-version/
Die Grundidee besteht darin, einen Symlink-Namen python zu python3 in ein anderes intelligent benanntes Verzeichnis zu setzen und dieses Verzeichnis dann am Anfang von $ PATH zu platzieren, damit es vor dem Verzeichnis unter / usr / bin gefunden wird.
Damit:
Mit dieser Lösung verknüpfen Sie / usr / bin / python nicht mit python3 und unterbrechen Skripte, bei denen davon ausgegangen wird, dass es sich um Python 2 handelt. Außerdem müssen Sie das Skript, das Sie von einer anderen Person heruntergeladen haben, nicht bearbeiten.
quelle
Ohne das gesamte System zu stören, besteht meiner Meinung nach der beste Ansatz darin, eine virtuelle Umgebung in Ihrem Nutzungskonto zu erstellen und diese zu aktivieren
/ path / to / your / python3 -m pip create ~ / .venv
Quelle ~ / .venv / bin / aktivieren
Dann ist Ihre Standardpython diejenige, die Sie zum Erstellen der Vence verwendet haben (im Pfad usw.)
Mit dieser Lösung stören Sie das System auch nicht, wenn Sie neue Bibliotheken installieren, und benötigen keinen Root-Zugriff.
Andere Lösungen können die Stabilität Ihres Betriebssystems beeinträchtigen
quelle