走ろうとしています。Python~から強く打つ(バージョン4.4.19
)コマンドライン。
ipython
私はPython開発者として、virtualenv
さまざまなパスにさまざまなPythonバージョンがインストールされているので、どのバージョンを実行しているかを知ることが重要です。したがって、$PATH
私が変更するとvirtualenv
常に変更され、これは次の一般的な値になりますPATH
。
$ echo $PATH
/Users/jab/.virtualenvs/tools/bin:/Users/jab/bin:/Users/jab/src/git/hub/jab/bin:/usr/local/gnu:/bin:/usr/local/bin:/usr/bin
ここで重要な詳細は、最初の項目が " /Users/jab/.virtualenvs/tools/bin
"であり、ファイルが/Users/jab/.virtualenvs/tools/bin/ipython
存在することです。
$ ls -l /Users/jab/.virtualenvs/tools/bin/ipython
-rwxr-xr-x 1 jab staff 252 May 11 15:18 /Users/jab/.virtualenvs/tools/bin/ipython
予想どおり、ファイルは ""コマンドでwhich
実行されることを意味します。$ ipython
$ which ipython
/Users/jab/.virtualenvs/tools/bin/ipython
$ $(which ipython) -c "import sys; print(sys.executable)"
/Users/jab/.virtualenvs/tools/bin/python
しかし、これは真ではなく、代わりに/usr/local/bin/ipython
実行されます。
$ ipython -c "import sys; print(sys.executable)"
/usr/local/bin/python3
bash
私が無視され、$PATH
「間違った」実行可能ファイルを使用する理由を誰か説明できますか?何を変更する必要がありますか?私のbashrc、または私のシステム(macOS 10.12.3
)でbashに、私が決めた順序で実行可能ファイルを選択させます$PATH
。
注:これは重複しません。私のパスにあるプログラムですが、Bashはプログラムを見つけることができません。、これはPATHに見つける方法を尋ねるからです。どのプログラム、そして質問はなぜ間違ったプログラムを見つけました。
答え1
以前のbashセッションで「無効な」実行可能ファイルが呼び出され、Bashはそのパス名を覚えているようです(これは正常です。この機能はPATH
既知のコマンドに対する追加の照会を防ぎます)。
この問題を解決するには、以下を実行する必要があります。
$ hash -d ipython
これにより、記憶された場所が消去されるため、ipython
Bashはコマンドを検索するために再度検索する必要がありますPATH
(この時点で正しい実行可能ファイルを探します)。