macのデフォルトpython3についてのメモ

スポンサーリンク
pexels-photo-303383.jpeg mac
Photo by veeterzy on Pexels.com

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)

以下サイトを参考にするように言われた。

ImportError in system pip wrappers after an upgrade · Issue #5599 · pypa/pip
Overview After upgrading to pip 10 or higher, many users are encountering error like ImportError: cannot import name 'main' TypeError: 'module' ...

“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はバージョンが変更できないため、多分使うことはないが色々と知れて良かったと思った。

コメント

タイトルとURLをコピーしました