macには初めから、python2がインストールされており、また、Xcode(コマンドラインディベロッパーツール)をインストールすることでpython3も一緒にインストールされる。このpython3を使おうと思いpipをアップデートしようとしたら、エラーやら警告やら出てきたのでその時のメモ。
目次 非表示
環境
- 機種名: MacBook Pro
- 機種ID: MacBookPro13,1
- プロセッサ名: デュアルコアIntel Core i5
- システムのバージョン: macOS 11.5.2 (20G95)
- ターミナル: zsh
標準インストールされているpython
初期状態でインストールされているpython2のバージョンとインストール先を確認。
% python -V
Python 2.7.16
% which python
/usr/bin/python
% pip -V
zsh: command not found: pip
python2はサポートが終了したため、特に何もしません。
python3のバージョンも確認しようとしたらエラーが出てきた。
コマンドライン・ディベロッパーツールをインストールすれば、python3も使えるらしい。
Xcodeをインストールすることでコマンドライン・ディベロッパーツールも入るので、今後のことを考えてXcodeをインストールしました。
Xcodeインストール後使用可能なpython3(コマンドラインディベロッパーツールインストール後)
% python3 -V
Python 3.8.2
% which python3
/usr/bin/python3
% pip3 -V
pip 19.2.3 from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% which pip3
/usr/bin/pip3
python3のパッケージ
pip3をアップデートしようとしたら、以下のエラー文が表示された。
% pip3 install -U pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/ca/31/b88ef447d595963c01060998cb329251648acf4a067721b0452c45527eb8/pip-21.2.4-py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 19.2.3
Uninstalling pip-19.2.3:
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 'RECORD'
Consider using the `--user` option or check the permissions.
WARNING: You are using pip version 19.2.3, however version 21.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
pip3の実行ファイルは”use/bin/pip3
“に置かれている。システム側にインストールされているものは、ユーザーではいじれないっぽい。
“–user”を付けてもう一度実行すると
% pip3 install -U pip --user
Collecting pip
Using cached https://files.pythonhosted.org/packages/ca/31/b88ef447d595963c01060998cb329251648acf4a067721b0452c45527eb8/pip-21.2.4-py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-21.2.4
WARNING: You are using pip version 19.2.3, however version 21.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
こんなエラー分が表示された。21.2.4が使用可能だが、19.2.3を利用していると書かれている。
pipのバージョンを確認してみる。
% pip3 -V
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 21.2.4 from /Users/syoya/Library/Python/3.8/lib/python/site-packages/pip (python 3.8)
以下サイトを参考にするように言われた。
“pip3 install -U pip –user”はlocalにインストールされているpythonに有効なコマンドらしい。
深くまで理解していないが”python -m pip”というコマンドでpipを呼び出せば良いらしい。
% python3 -m pip -V
pip 21.2.4 from /Users/syoya/Library/Python/3.8/lib/python/site-packages/pip (python 3.8)
多分、アップデート前のpip19.2.3のサイトパッケージのインストール先と、アップデート後の”pip21.2.4″の場所が違うから、pip21.2.4のPATHが通っていないのだと思う。
警告は出るものの”pip3″コマンドも使えるっぽい。
% python3 -m pip list
Package Version
---------- -------
pip 21.2.4
setuptools 41.2.0
six 1.15.0
wheel 0.33.1
% pip3 list
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Package Version
---------- -------
pip 21.2.4
setuptools 41.2.0
six 1.15.0
wheel 0.33.1
“python3 -m pip install numpy
“コマンドで、numpyをインストールしてみる。
% python3 -m pip install numpy
Defaulting to user installation because normal site-packages is not writeable
Collecting numpy
Using cached numpy-1.21.2-cp38-cp38-macosx_10_9_x86_64.whl (16.9 MB)
Installing collected packages: numpy
WARNING: The scripts f2py, f2py3 and f2py3.8 are installed in '/Users/syoya/Library/Python/3.8/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed numpy-1.21.2
やはりPATHが通っていないため、警告が出てきている。てことでPATHを通してみる。
PATHの追加
アップデートしたpipコマンド等は”~/Library/Python/3.8/bin”に入っているのでこのパスを通します。
まず、現在のPATHを確認します。
% echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
この先頭にパスを追加します。
ターミナルが”zsh”なら”.zshrc”、”bash”なら”.bash_profile”ファイルを開き、環境変数を追加します。ない場合”touch .zshrc”でファイルを作ってください。
“open ~/.zshrc
“でファイルを開き以下の内容を追記します。
export PATH="$HOME/Library/Python/3.8/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
追加したPATHの”$HOME/Library/Python/3.8/bin
“以降はその前からあったPATHです。
最後に以下のコマンドで編集した内容を反映させます。
source .zshrc
実際にPATHを確認。
% echo $PATH
/Users/syoya/Library/Python/3.8/bin:usr/:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:
ちゃんとPATHが追加されています。
この状態でpip3コマンドを実行してます。
-zsh ~ % pip3 -V
pip 21.2.4 from /Users/kanekomasaya/Library/Python/3.8/lib/python/site-packages/pip (python 3.8)
なんの警告も出すことなく実行できました。
まとめ
今回、Xcodeを入れることで、python3.8も利用できることを知りpipをアップデートしようとした時に返されたエラーや警告について調べてみました。
エラー、警告の原因は元々入っているpipとアップデートでインストールされるpipの場所が違うことによりPATHが通っていないということだった。
Xcodeでインストールされるpythonはバージョンが変更できないため、多分使うことはないが色々と知れて良かったと思った。