LoginSignup
3
3

More than 5 years have passed since last update.

Homebrew部 python3デフォ化により普通には使えなくなったpython2系を使う裏技

Last updated at Posted at 2018-03-08

Homebrewがアップデートしたので初投稿です。

概要

  • "Python3"コマンドを打ってファッてなった人向け。
  • Homebrewの導入については先駆者兄貴にお任せします。
  • macOS HighSierra 10.13.2
  • HOMEBREW_VERSION: 1.5.8

(Homebrewではpython3をデフォルトとして扱うので)お兄さん許してぇ

Homebrewをアップデートしたからにはもう元には戻れないゾ
Homebrewで"python"コマンドを実行すると3系で実行されるようになりました。

今まで.bash_profileで

.bash_profile
export PATH="/usr/local/bin:$PATH"

のようなベタ打ちし、pyenv等切り替えや仮想環境を碌に使用せず実行時に

python file.py
python3 file.py

のように2系3系を使い分けていた人間のクズからすると大変な仕様変更です。(クズでなくてもめんどくさい仕様変更です。)
冗長な説明になりますが上記コマンドでは、Homebrewはどちらでもpython3系を扱って実行されます。

・methaneのブログ このブログに乗せているサンプルコードはすべてNYSLです。
「3月1日、Homebrew のデフォルトの Python が Python 3 になります。」

methane様のブログにて簡潔に状況がまとめられています。

最後にbrewのpython2を使い、そこはかとなく今までのようにpythonを扱う方法を記載します。

具体的な変更はどうで、それをどうすればいいのか

brew update でPython環境がおかしくなったので雑に解消メモ
上記の記事にてエイリアスの変更について記されていました。書き終わった後に見つけてしまいました。

3/1以降のアップデートの時点でHomebrewにて扱うpython3("usr/local/bin/python3")のリンクは
("/usr/local/Cellar/python/3.6.4_3/Framewo~~~")
を叩くようになりました(python3のバージョンは3/8現在)。

python3コマンドを受け付けなくなった理由は
まずHomebrewをアップデート時に("/usr/local/Cellar/python3")のディレクトリが消された。
それなのにpythonのformulaは更新されていないのでpython3コマンド("usr/local/bin/python3")からのリンクは存在しない("/usr/local/Cellar/python3")を叩いておりコマンドを受け付けなかった。
pythonのformula更新時に("/usr/local/Cellar/python3")から("/usr/local/Cellar/python")へののシンボルリンクが貼られpython3コマンドが有効になった、が真相だと思います。
ガバガバ推理ですみません。

以下のコマンド入力して欲しいのですが、過去の環境を再現することは並みの裏技ではできないと思いますので注意してください。もうアップデート後なので後の祭りだと思いますが。

brew upgrade python

普通にHomebrewのpythonをアップデートするコマンドです。これで"python3"と打つとHomebrewのアップデート時点での最新のpython3にシンボリックリンクが通り、実行されるといった状況になるのだと思います。

HomebrewのPython2を扱う

Homebrewのpython2系を敢えて使うにはoptディレクトリからのpython2のシンボリックリンクを叩く必要があります。

How to run Python2 after Homebrew Update?
での回答のようにbrew link --force python2 で解決しても後々問題は出ないと思うのですが、.bash_profileに

.bash_profile
export PATH="/usr/local/opt/python@2/bin:$PATH"

とコメントと共に記述しておけば安全だと思います。(Homebrewでもlinkを貼ろうとすると推奨されます。)
これで

python2 file.py

と入力する形で、恐らくpython3もpip3も動く今までと近い状態でpython2系を扱えるはずです。

編集後記

かなりガバ推理なので、訂正言及していただけるとありがたいです。
アプデ後にディレクトリ眺めたので過去の形がわからない状態で推測しました。

とりあえずbrew側から言及されるエラー情報だけだと一本道で解決しないので、ヒントになるページに飛べるまとめを作りました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3