ZSH で正しい $PATH が設定されているのに、間違った Python バージョンが返される

ZSH で正しい $PATH が設定されているのに、間違った Python バージョンが返される

私の環境設定に何か大きな問題が起きています。学習中なので、Macbook Pro に Mac OSX El Capitan を再インストールし、最初からインストールと設定を開始することにしました。使用しているシェルは ZSH で、Oh-My-ZShell で少し設定しました。

私の $PATH と 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
~ ❯

以下のスクリーンショットは、 に 2 つの Python2 がインストールされており/usr/bin、 に Homebrewed Python3 がインストールされていることを明らかに示しています/usr/local/bin

Python2 および Python3 パスのターミナル スクリーンショット

結果は次のとおりですprintenv(PATH および 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

私の最初のエントリー.zshrc:

export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin 

どうもありがとう!

答え1

シェルプロンプトで入力する場合、正確に名前が付けられたバイナリのみpythonが考慮されます。python

pythonを実行したい場合python3、それを実現する簡単な方法は、個人のシェル起動ファイルに関数またはエイリアスを設定することです。

pythonシステム全体に対してポイントを設定することは絶対にしないでください。python3そうしないと、Python バージョン 2 を必要とする一部の OS およびサードパーティ ツールが動作しなくなりますpython。これら 2 つは相互に互換性のない言語 (または方言) です。

ここで何が起こっているかを確認すると、commandプロンプトに と入力すると、シェルは 内のディレクトリを反復処理PATHし、各ディレクトリで正確に名前が付けられた実行可能ファイルを検索します。これは、ファイルが見つかるか、検索する場所がなくなるまで続きます。またはまたは のcommandように、偶然類似している場合でも、他の名前のファイルは単に無視されます。エイリアスまたは関数がある場合は、代わりにそれらが使用されますが、エイリアスまたは関数によって呼び出される他のコマンドを見つけるために が参照される可能性があります。xcommandcommandantecommand3.xxPATH

答え2

シェルはPATHを検索します完全一致と入力するとpython、 に一致する実行可能ファイルを検索しようとしますが^python$^python...$は同じではありません。

あなたの場合、/usr/local/bin に python がないか、権限の問題があり、スキップされる可能性があります。

1) がないpython場合/usr/local/bin:

使用したい Python インタープリターを指すsudo ln -s /usr/local/bin/python3.6 /usr/local/bin/pythonソフト リンクを作成するには、を使用できます。PATH では最初に /usr/local/bin が検索されるため、シェルはこのリンクを見つけるはずです。python

2) ファイルは存在するが/usr/local/bin実行する許可してください。試してくださいsudo chmod a+x /usr/local/bin/python

今のところ他の問題は考えられません。

関連情報