はじめに
pyenvでpython環境を整えていたが、正常に動作しないので再インストールすることにした。具体的には、新しく異なるバージョンのpythonをインストールして、global環境をそれに切り替えても、systemのpythonを参照してしまう。以下に状況を記録しておく。
$pyenv global X.Y.Z
$pyenv global
>> X.Y.Z
$which python
>> ~/.pyenv/shims/python
$python --version
>> python A.B.C
今まではきちんと動作していたし、元々インストールしていたpythonバージョンへの切り替えも問題なく行える。
色々調べてみたが記事が見当たらなかったので、TimeMachineで状態を保存しつつ、思い切って再インストールしてみることにした。
環境
macOS: Catalina 10.15.7
xCode: version 12.4
準備
$brew doctor
$softwareupdate --all --install --force
一応、brew
を確認。Warning: A newer Command Line Tools release is available.
と出たので、softwareupdate
でアップデートする。
しかし、Command Line Toolはアップデートされなかったので、以下の手順でアップデートする。
$sudo rm -rf /Library/Developer/CommandLineTools
$sudo xcode-select --install
うまくアップデートされた。
さらにここを参照してHomebrewの環境も整える。
$brew install openssl readline sqlite3 xz zlib
この時点で、zlibがinstallされていなかったことに気付く。
これが原因できちんと動作していないのかと思ったが(実際、新しくpyenv install x.y.z
で正しくインストールされていなかった)、問題解決には至らず、結局systemのpythonを参照してしまう。
この時点で、timemachineで状態を保存しておく。
アンインストール
ここを参照しつつアンインストール。
$rm -rf $(pyenv root)
$brew uninstall pyenv
インストール
ここを参照してインストール。
$brew update
$brew install pyenv
環境設定
ここを参照して.bash_profile
と.bashrc
に以下を書き込む。
# export PYENV_ROOT="$HOME/.pyenv"
# export PATH="$PYENV_ROOT/bin:$PATH" <- These two lines are not needed if pyenv is installed with Homebrew.
eval "$(pyenv init --path)"
if command -v pyenv >/dev/null; then eval "$(pyenv init -)"; fi
最終的に
残念ながら状況は改善されなかった。ただ、python
コマンドがpython2
を参照にしているのが原因なのは分かった。例えば、pyenv global 3.X.Y
と打った場合、python3
はバージョン3.X.Y
に変更されている。解決策が見つかるまで、python3
とかpip3
として、やることにする。