brewでインストールした/usr/local/bin/pythonが使用されない
使用していたシェルをzshからfishに変更して"virtualfish"を読み込もうとした際、brewでインストールした/usr/local/bin/pythonではなく、systemの/usr/bin/pythonが使用されていた。 それにより"/usr/bin/python: No module named virtualfish"が出てしまって右往左往したので解決策を書く。
環境
- OS: macOS sierra
- マシン: macbook Air
- シェル: fish
インストールしたもの
$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
以上。問題ないことが確認出来た。