ただ枯れゆく大樹が如く

技術の話やら愚痴やら節操もなく徒然と

brewでインストールした/usr/local/bin/pythonが使用されない

使用していたシェルをzshからfishに変更して"virtualfish"を読み込もうとした際、brewでインストールした/usr/local/bin/pythonではなく、systemの/usr/bin/pythonが使用されていた。 それにより"/usr/bin/python: No module named virtualfish"が出てしまって右往左往したので解決策を書く。

環境

インストールしたもの

$brew install python
$brew info python
python: stable 2.7.13 (bottled)
  • virtualfish
$pip install virtualfish
$pip freeze | grep virtualfish
virtualfish==1.0.5

エラーになったコマンド

  • ~/.config/fish/config.fishでのvirtualfish設定
$/usr/bin/python -m virtualfish
/usr/bin/python: No module named virtualfish

調査

まずはpythonのバージョンをチェックした。

$python -V
Python 2.7.10

ついでにpythonのパスもチェックしたところ、brewでインストールされたpythonを使ってないことが分かる。

$which python
/usr/bin/python

調べているとbrew unlink python; brew link pythonで解消したとの事例があったので試したが駄目。

次に見たのが/etc/paths/usr/local/binよりも上に/usr/binがあると駄目ってあったので確認したが問題なし。

$cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

結論

/usr/local/binを改めて見てみると、brewでインストールしたpythonって/usr/local/bin/pythonじゃなくて、/usr/local/bin/python2だと気づいた。

$/usr/local/bin/python2 -V
Python 2.7.13

となればシンボリックリンクを貼ってやれば解決するなということで、

$ln -fs /usr/local/bin/python2 /usr/local/bin/python
$python -V
Python 2.7.13

ようやくbrewでインストールしたpythonが使用されていることが確認出来たので最後にエラーが出ていたコマンドを確認。

$python -m virtualfish
set -g VIRTUALFISH_VERSION 1.0.5;set -g VIRTUALFISH_PYTHON_EXEC /usr/local/opt/python/bin/python2.7;. /usr/local/lib/python2.7/site-packages/virtualfish/virtual.fish;emit virtualfish_did_setup_plugins

以上。問題ないことが確認出来た。