誰向け?
MacでHomebrewを使っていて、pipで入れたパッケージがうまく動かない人向け。
状況
pip3で入れたはずのパッケージがどうしてもcommand not foundになる。
python3 -m pip install <パッケージ名> —user
とかやってもダメ。
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: chalice in ./Library/Python/3.8/lib/python/site-packages (1.27.1)
…
と出るし、インストールはされているがMac側がうまく参照できていないっぽい。
結論
homebrewをインストール後にpython3やpip3をインストールしなおしていなかった
(brewでアレコレと入れていたもののpython3やpip3はデフォルトのものを使っていたことになり、PATHがおかしなことになっていたらしい)
回復方法
今使っているpythonはどこのもの?
おそらくデフォルトのpython3やpip3をつかっていた人はwhichコマンドを使うと
which python3
→ /usr/bin/python3
which pip3
→ /usr/bin/pip3
となっていると思う。これは MacデフォルトのPythonのPATH。
brew install python3
とターミナルに打ち込み、完了すると
- 新しくインストールし直されたpython
- 新しくインストールし直されたpip
- 今後pipでインストールするものの場所
のPATHが表示されるので、メモしておく。
PATHを書き換えるには
最近のMacではデフォルトのシェルがzshになっている。
そこでホームディレクトリ(Finder→移動タブ→ホーム で表示されるディレクトリ)で[command]+[shift]+[.(ドット)]キーを押すことで隠しファイルを表示する。
.zshrcファイルがPATHの設定ファイルなのだが、存在しないこともある。
その場合はターミナル上でホームディレクトリに移動した上で
touch .zshrc
をしてサクッとつくっておこう。
エディタでもvimでもいいのでとりあえず.zshrcファイルを開き、
# Python3
export PATH="$PATH:/usr/local/bin/python3"
# installed by pip3
export PATH="$PATH:/usr/local/lib/python3.9/site-packages"
と追記し、保存。ここは筆者の環境で表示されたPATHを記載しているが、これはそれぞれの環境に合わせて変更してほしい。
その後ターミナルで
source ~/.zshrc
と打ち込んで状態を更新しておく。
脱線 - コマンドがpythonだったりpython3だったりややこしい
python実行コマンドが環境によってpythonだったりpython3だったりする。本当になんで?
pythonと打ってpython3を実行できるようにできないものか。
これも.zshrcファイルに設定を追加しておくことでなんとかできる。
.zshrcファイルを開き、
alias python="python3"
alias pip="pip3"
と書き込み、保存。
ターミナルで
source ~/.zshrc
として更新しておく。
PATHが変更できたか確認
ターミナルを再起動し、
which python3
を実行して変更した通りのPATHになっているかを確認する。
変更が確認できれば、
pip install <パッケージ名>
を実行する。
完了
上記の方法で筆者はchalice(AWSのフレームワーク)のインストールを完了できました。
Mac環境でPATHを通し間違えたときはこちら