Homebrewの自動アップデート設定のせいでpythonが3.7系から3.9系へとアップデートされてしまいました。
3.9系だと動作しないモジュール等もあり、3.7系へ切り戻したい!!と思い、いろいろ試行錯誤するも苦戦してしまったため、なんとかの解決策をみなさんへ共有するべく記事にしました。
この記事はHomebrewでインストールしたpythonをpyenvを使わずにバージョンを切り替え(切り戻し)たい方向けの記事です。pyenvの使い方には触れていませんのであしからず...。
brew switchが使えない!?
pyenvではなくHomebrewで直接入れたpythonならbrew switch
コマンドを使えば切り戻すことができる。という記事をいくつも見てきた。
さっそく試してみたのだが、何度やってもダメだ。
Error: Unknown command: switch
brew switch python3.7.5
をやるとError: Unknown command: switch
と怒られる。
そもそもbrewのswitchコマンドなんてないじゃん...。
そうそう。Homebrewのアップデートによってswitchコマンドが廃止になったそうだ..。
(まだHomebrewをアップデートしていない方はbrew switchコマンドが使えるので試して見る価値はありそう。)
では、brew switchを使わない他の方法を試すしかないですね。
やっぱ、pyenvを使うのがいいのかもしれない...と思ってきた。
ですが僕はpyenvを使うことに少し抵抗がありまして..Homebrew配下に直接pythonを入れたいんだという強い信念がある。僕と考えが一緒の方は続きをぜひ、御覧ください。
Homebrewのpythonをアンインストールする
よし、ではpython一式をアンインストールし、再度インストールし直そう。
brew uninstall python3
:
#以下のコマンドを打ちなさいと怒られるので以下を打つ
brew uninstall --ignore-dependencies python3
これでpython3は消えたかな。(環境によっては依存関係のあるモジュール等も消す必要がある場合があります。
その場合はメッセージで確認できますので、メッセージに従って削除してください。)
brew list
でpython@3系がないことを確認
そして再度、バージョン指定をしてpythonを入れ直す。
brew install python3.7
これで解決!!と思ったが、あれ!?
python3.7系を指定してインストールしたはずがpython3.9系にアップデートされてインストールされている。
Homebrewの自動アップデート機能にまたもややられた。こんなんじゃ、バージョン指定してインストールできないじゃないか。
Homebrewの自動更新機能の無効
ということで、Homebrewの自動更新機能を無効化してみる。
export HOMEBREW_NO_AUTO_UPDATE=1
を環境変数としてターミナルに打ち込み設定してあげると自動更新が無効になる。有効にしたい場合はunset HOMEBREW_NO_AUTO_UPDATE
を打てばいい。
これは一時的なものなので永続的に設定したい場合は、.zshrc
か.bashrc
にexport HOMEBREW_NO_AUTO_UPDATE=1
を追記しておこう。
さてさて、これで準備は整った。再びpython3をアンインストールし、再度バージョン指定をしてインストールしてあげる。
すると、うまく指定したバージョンでHomebrew配下にpython3系がインストールすることができた。
PATHもろもろの設定が漏れているかも!?
上記の手順で設定をおこないpythonを使っていくと、意図しない挙動になることがあった。
なぜかpython3.7系を使っている(つもり)なのだがpython3.9のPATHを見に行ったりしている。
PATHがめちゃくちゃな状態になっているようだ。
一旦PATHもすべて書き換えてインストールするべきだ。
ということで、またまた再びpython3をアンインストールし、python3.7系をクリーンな状態で入れ直す。
インストール時に
brew reinstall python3.7
を行えばPATHもろもろの再設定をしてくれる。
これでとりあえずは解決した。いやー長かった。単純にpyenvを使ったほうが早かったですね。
Homebrewのpython3の切り替え(切り戻し)まとめ
Homebrewのbrew switch
が使えない方は以下の手順でpython3系のバージョン切り戻しができます。
(brew switchが使える方はそちらを使ったほうが簡単で早いです)
- python3系のアンインストール
brew uninstall --ignore-dependencies python3
- Homebrewの自動更新機能の停止
export HOMEBREW_NO_AUTO_UPDATE=1
- PATHの再設定を兼ねたインストール
brew reinstall python3.x
コメント