3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MacでXcodeと一緒にpython3をインストールする

Last updated at Posted at 2020-08-22

はじめに

macOSにはpython2.7が標準でバンドルされていますが、python3系は入っていません。python2系は既にサポートが終了していますので、python3系に切り替えている方が多いのではないかと思います。私もディープラーニングのコードを動かす時(勉強用に人様が作ったコードを動かしてみるのがメインですが・・)にpythonを使いますが、最近はいつもpython3を使っています。

macOSにpython3がついてこないので、これまでは;

  • anaconda → 最近は使っていない
  • pyenv → 最近はこっち

を使ってpython3をインストールしていました。今回iMacを2020(最後のIntel版)に更新して環境構築を行なっていた際に、Xcode Command Line Toolsをインストールするとpython3が同時にインストールされることに気がつきました。この情報、ネットを調べてもあまり見かけませんが、Xcodeをインストールする方はついでにpython3も手に入れることができるため、案外お手軽な方法かもしれないと思いこの記事でご紹介します。

ただし、Xcodeのバージョンによってついてくるpython3のバージョンが決まっているたため、pythonのバージョンを決め打ちにしたい方には向いてないですが・・

検証環境

  • macOS Catalina 10.15.6 → 現在はBigSur 11.2.3にアップデートしています
  • Xcode 11.6 → 現在は12.4にアップデート
  • OS標準のpython2.7以外は入っていない状態からスタート

手順

pythonのバージョンを確認

$ python --version
Python 2.7.16

$ python3 --version
xcrun: error: active developer path ("/Library/Developer/CommandLineTools") does not exist
Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools.
See `man xcode-select` for more details.

Xcode command line toolsのインストール(xcode-select --install)でpython3が使えると言っているではありませんか! 早速インストール。

Command Line Toolsのインストール

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

start-install.png

Xcode本体(6GBくらいありでかい)をインストールしていなくてもcommand line tools単体でインストールすることもできます。この時点ではCatalinaに対応したXcode 11.6のcommand line toolsがインストールされますが、インストール中にアップデートがあるよと通知が出ていました。とりあえず最後までインストールします。

update-notification.png

インストール後の確認

$ python3 --version
Python 3.7.3

$ pip3 --version
pip 19.0.3 from /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages/pip (python 3.7)

pip3 list
Package    Version
---------- -------
pip        19.0.3 
setuptools 40.8.0 
six        1.12.0 
wheel      0.33.1 

python 3.7.3とpipがインストールされてました!
デフォルトで入っているモジュールは/Libray配下のシステム領域にインストールされています。

$ pip3 show six
Name: six
Version: 1.12.0
Summary: Python 2 and 3 compatibility utilities
Home-page: https://github.com/benjaminp/six
Author: Benjamin Peterson
Author-email: benjamin@python.org
License: MIT
Location: /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages
Requires: 
Required-by: 

試しにnumpyをインストールしてみます。--userオプションをつけてユーザディレクトリ配下にインストールするようにします。

~$ pip3 install --user numpy
Collecting numpy
  Using cached https://files.pythonhosted.org/packages/ad/0b/c8b1383f0c43eabf925172ce850bf2224ede9fc351e8acf0ddd66ff567ff/numpy-1.19.1-cp37-cp37m-macosx_10_9_x86_64.whl
Installing collected packages: numpy
  The scripts f2py, f2py3 and f2py3.7 are installed in '/Users/kenshi/Library/Python/3.7/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.19.1

$ pip3 list
Package    Version
---------- -------
numpy      1.19.1 
pip        19.0.3 
setuptools 40.8.0 
six        1.12.0 
wheel      0.33.1

PATHが通っていないという警告が出ていますがnumpyのインストールができました。
インストールされたパスは以下の通りでユーザのLibrabyフォルダ配下でした(~/.xxxの隠しフォルダに入れられるより、こっちの方が好きです)。

$ pip3 show numpy
Name: numpy
Version: 1.19.1
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /Users/kenshi/Library/Python/3.7/lib/python/site-packages
Requires: 
Required-by

Command Line Toolsをアップデートすると

start-update.png

このアップデートでCommand Line Tools for Xcode 12 beta 5がインストールされるようです。(Xcode本体は更新されませんでした)

アップデート完了後にpythonのバージョンを確認すると3.8.2になっていました・・
pipでインストールしたモジュールは、python3.8のパッケージとして引き継がれています。

$ python3 --version
Python 3.8.2

$ pip3 --version
pip 19.2.3 from /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)

$ pip3 list
Package    Version
---------- -------
numpy      1.19.1 
pip        19.2.3 
setuptools 41.2.0 
six        1.15.0 
wheel      0.33.1

$ pip3 show numpy
Name: numpy
Version: 1.19.1
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /Users/kenshi/Library/Python/3.8/lib/python/site-packages
Requires: 
Required-by: 

その他

ここまではpipは動かない(pip3で起動する必要がある)のですが、pip3をアップデートするとpipコマンドでも動くようになりました。

$ pip --version
zsh: command not found: pip

$ sudo pip3 install -U pip

$ pip3 --version
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 20.2.2 from /Library/Python/3.8/site-packages/pip (python 3.8)

$ pip --version
pip 20.2.2 from /Library/Python/3.8/site-packages/pip (python 3.8)

$ pip list
Package    Version
---------- -------
numpy      1.19.1
pip        20.2.2
setuptools 41.2.0
six        1.15.0
wheel      0.33.1

pip3 --versionの実行時にワーニングが出ていますが、一旦ターミナルを終了して再度動かしすとこのワーニングは出なくなりました。

その後

現在はmacOS BigSur(11.2.3)のpython 3.8.2で動いていいます。
ただ、macOSのバージョンアップが入ると、マイナーバージョンアップでもpipが動かなくなったりすることがあり正直微妙な感じです。

pipが動かなくなった際の対処Tips

  1. No module named 'pip._internal.cli.main' が発生する
    ・python3が動く場合、pyhton3 -m pipで起動してみる。
    ・起動できる場合、sudo python3 -m pip install -U pip で復活する

おわりに

ということで、Xcodeのアップデートで勝手にpython3.8に更新されるところは微妙な結果ですが、python3のインストールはこれまでより簡単にできました。

私がMacで使っている範囲ではpython3.8だと動かないソフトはないため(あとpythonを動かすのはLinuxマシンがメインですし)、しばらくこれでやってみようと思っています。

3
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?