Python2の削除
Homebrewで2年ほど前にPython3への移行で少しごたごたがありましたが、 2020年1月1日でPython2のサポートが終了したので 1 これを機にHomebrewでも Python2を削除したようです。
もともと上のときからpython
というFormulaはPython 3をインストールするようになっていましたが、
今回python@2
及び、そのエイリアスのpython2
が削除されました。
削除されてももともと入れていた場合、brew list
とかでpython@2とかが見れるし入ったままになっていると思いますが、
一旦削除すると再インストールはできない状態になります。
上のコミットメッセージに
python@2: delete (#49796)
EOL 1 January 2020.
We gave it 1 month more to live so that people had time to migrate.
All in all, developers had 11 years to do their migration.
You can use the `brew extract` command and maintain python@2 in your own
tap if necessary:
https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap
とありますが、brew extract
が上手くいかないので、もし今後どうしても
HomebrewでPython2をインストールしたい場合、
$ brew install brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/[email protected]
の様に過去のFormulaを直接参照するような形にすれば入れることはできます。
Python3
Python3に関してはpython
というFormulaが担当してます。
Python2が削除されてもbrew install python
で/usr/local/bin/pythonへリンクを作ることは今のところしないようで、
python3
やpip3
コマンドを使うように、としています。
python
やpip
で3を呼びたいときは
/usr/local/opt/python/libexec/binにリンクがあるので
ここへPATHを通せばpython
でpython3
が呼べるようにはなります。
site-packagesは$(brew --prefix)/lib/pythonX.Y/site-packages
。
現時点でpython
が入れるPythonは3.7.6です。
これとは別に[email protected]
というフォーミュラが用意されていて、
/usr/local/opt/[email protected]/bin/python3
にインストールされます。
site-packagesは/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages。
セットアップの更新
とりあえずPython2についてどうしようか、と思いましたが、 削除してしまいました。
$ brew rm python@2
まだ、macOSデフォルトの/usr/bin/python(2.7.16)は存在しています。
現状Shebangで
#!/usr/bin/env python
と呼んでる物がまだ結構あって(Python3に対応しているものでも)、Python3への対応をどうしようか、と思ってるんですが、
とりあえず様子見として/usr/local/opt/python/libexec/binへもPATHを通して
python
でもpython3
を呼ぶようにして見ようと思います。
以下の様な設定を.bashrcとかに追加。
_set_homebrew_path () {
brew_prefix=$(command brew --prefix 2>/dev/null)
ret=$?
if [ $ret -ne 0 ];then
return
fi
export PATH="$brew_prefix/bin:$PATH"
export PATH="$brew_prefix/sbin:$PATH"
export LD_LIBRARY_PATH="$prefix/lib:$LD_LIBRARY_PATH"
#...
#...
local python3=$("$brew_prefix/bin/python3" --version 2>/dev/null)
local ret=$?
if [ $ret -eq 0 ];then
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
python_version=$(echo "$python3"|cut -d' ' -f2|cut -d '.' -f 1,2)
export PYTHONPATH="$brew_prefix/lib/python$python_version/site-packages"
fi
#...
#...
}
_set_homebrew_path
Pythonスクリプトの更新
今後、各OSでPythonをどう扱っていくかわかりませんが、 Python2の代わりにPython3を標準的に入れてくようにはなると思います。
一部のOSとかで標準的にPython3を/usr/bin/pythonに入れるものもあるみたいですが、
一般的にはPython3はpython3
で呼ぶような状態で、
しばらくはそのままだと思います。
ただ、今更Python2用のコードを書いても仕方ないので、 これを機に使ってるスクリプトは基本的に
#!/usr/bin/env python3
に置き換えて使える様に変更していかないとな、といったところ。