mit meiner Umgebung stimmt etwas nicht. Da ich versuche, es zu lernen, habe ich beschlossen, Mac OSX El Capitan auf meinem Macbook Pro neu zu installieren und von Grund auf neu zu installieren und zu konfigurieren. Die Shell, die ich verwende, ist ZSH und ich habe sie ein wenig mit Oh-My-ZShell konfiguriert.
Mein $PATH und Python:
~ ❯ echo $PATH
/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
~ ❯ python --version
Python 2.7.10
~ ❯
/usr/bin
Der Screenshot unten zeigt deutlich, dass zwei Python2-Versionen und ein Homebrewed Python3-Version installiert sind /usr/local/bin
.
Hier ist das Ergebnis von printenv
(nur Einträge bezüglich PATH und SHELL):
PATH=/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
PWD=/Users/edchigliak
SHELL=/usr/local/bin/zsh
SHLVL=2
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.lRGo5iu4NA/Listeners
TERM=screen-256color
ZSH=/Users/edchigliak/.oh-my-zsh
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
_=/usr/bin/printenv
Erster Eintrag in meinem.zshrc
:
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin
Vielen Dank!
Antwort1
python
Bei der Eingabe in der Shell-Eingabeaufforderung werden nur Binärdateien mit exaktem Namen berücksichtigt python
.
Wenn Sie python
ausführen möchten python3
, können Sie dies am einfachsten erreichen, indem Sie in Ihren persönlichen Shell-Startdateien eine Funktion oder einen Alias festlegen.
Sie dürfen auf keinen Fall systemweit python
darauf hinweisen , da dies einige Betriebssysteme und Tools von Drittanbietern beschädigen würde, für die Python Version 2 erforderlich ist. Die beiden sind miteinander inkompatible Sprachen (oder Dialekte, wenn Sie so wollen).python3
python
Um zu überprüfen, was hier passiert: Wenn Sie command
in die Eingabeaufforderung tippen, durchläuft die Shell die Verzeichnisse in Ihrem PATH
und sucht command
in jedem nach einer ausführbaren Datei mit genau demselben Namen, bis sie eine findet oder keine Orte mehr zum Suchen hat. Sie ignoriert einfach alle Dateien mit anderen Namen, selbst wenn sie ähnlich sind, wie xcommand
oder commandante
oder command3.xx
. Wenn Sie einen Alias oder eine Funktion haben, wird diese stattdessen verwendet, obwohl Ihr PATH
möglicherweise dann konsultiert wird, um andere Befehle zu finden, die von Ihrem Alias oder Ihrer Funktion aufgerufen werden.
Antwort2
Die Shell durchsucht PATH nachGenaue Übereinstimmungen. Wenn Sie eingeben python
, wird versucht, eine ausführbare Datei zu finden, die mit übereinstimmt ^python$
; ^python...$
ist nicht dasselbe.
In Ihrem Fall könnte es sein, dass in /usr/local/bin kein Python vorhanden ist oder dass ein Berechtigungsproblem vorliegt, weshalb es übersprungen wird.
1) Wenn kein python
in vorhanden ist /usr/local/bin
:
Sie können sudo ln -s /usr/local/bin/python3.6 /usr/local/bin/python
einen Softlink erstellen, der python
auf den gewünschten Python-Interpreter verweist. Da /usr/local/bin zuerst nach Ihrem PATH durchsucht wird, sollte die Shell diesen Link jetzt finden.
2) Wenn die Datei existiert, /usr/local/bin
aber nicht hatausführenErlaubnis, versuch es sudo chmod a+x /usr/local/bin/python
.
Mir fallen momentan keine anderen Probleme ein.