こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。
今回は、Pythonを使ったデータ分析や機械学習を手元のMacで試してみたい人の、このような疑問に答えます。
オンラインでの使い方は分かってきたので、Pythonを手元のMacにインストールする方法を知りたい。できれば、気軽にアップデートやアンインストールができて、Pythonを長く安全に使える方法だとありがたい。
私は、大学の研究と自分の趣味で、合わせて5年以上Pythonを使ってきました。
その間にMacの買い替えもあったり、一からPythonのインストールをし直すハメになったことも何度かあります。
この記事では、そのような経験を生かして、PythonをMacにインストールして長く安全に使える方法を紹介します。
- 手元のMacでPythonを使いはじめたい方
- インストールしてから時間が経っても、変なエラーに悩まされず気軽にアップデートやアンインストールをしたい方
MacでPythonを使うなら、当然ですが自分のMac環境が必要ですよね。
Pythonを快適に使えるMac環境をこちらの記事で説明していますので、まだMacを持っていない方や、新しいMacで心機一転Pythonをはじめたい方はあわせてご覧ください。

Pythonインストール・Mac編【基礎知識】
実は、Macには、AppleがデフォルトでPythonをインストールしています。
ですが、MacでPythonを長く安全に使いたいなら、このデフォルトPythonをそのまま使い続けない方がいいです。
デフォルトでPythonがインストールされてるなら、それを使えば楽じゃない?
確かに最初は楽ですけど、あとあといろいろと面倒なんです・・・。
その理由は大きく3つあります。
古い
デフォルトのPythonは最新でないことが多いです。
常に最新のものを使う必要はないですが、あまりに古いものをそのまま使い続けると、セキュリティ面で問題が起こる場合があります。
パーミッションの問題
ライブラリを追加でインストールしたい時に、パーミッションの問題が起こりやすいです。
問題をむりやり解決しようとすると、Macで正常に動いている他のシステムを壊してしまう可能性があります。
ライブラリが消える可能性
OSメジャーアップグレードのたびに、これまでインストールしたライブラリが消えてしまうことがあります。
パーミッション
一言でいうと、誰がどのファイル・ディレクトリを「読み込み」「書き込み」「実行」できるか、管理する仕組みです。システムの大切なファイルを間違えて消したりできないようにするなど、とても大切な役割を果たしています。
詳しくは【一通り理解】Linuxパーミッションの基本とその設定方法などを参考にしてください。
ライブラリ
「他のプログラムから利用される前提で作られたプログラム」のことです。データ分析や機械学習をするには、このようなプログラムを追加でインストールする必要があります。
具体的に「デフォルトのPython」を確認してみましょう。
/Applicationsの中にある「ターミナル.app」(Terminal.app)を起動して

以下のコマンドを実行します。
1 2 3 4 5 | $ which python $ python $ python2.6 $ python2.5 $ ls -l /System/Library/Frameworks/Python.framework/Versions/2.7/lib/ |
この記事で使う表記法
- コメント
1 | # コメントの例です |
- ターミナル上で実行するコマンド($マークは入力不要)
1 | $ which python |
- py3envという名前の仮想環境を有効化した状態で実行するコマンド(”(py3env) $” は入力不要)
1 | (py3env) $ which python |
- Pythonを起動した状態で実行するコマンド
1 | >>> import os |
実行結果はこんな感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ which python /usr/bin/python $ python Python 2.7.10 (default, Feb 7 2017, 00:08:15) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> ^D $ python2.6 Python 2.6.9 (unknown, Feb 7 2017, 00:08:08) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> ^D $ python2.5 -bash: python2.5: command not found $ $ ls -l /System/Library/Frameworks/Python.framework/Versions/2.7/lib/ total 8 lrwxr-xr-x 1 root wheel 9 Nov 13 2014 libpython2.7.dylib -> ../Python drwxr-xr-x 5 root wheel 170 Nov 13 2014 pkgconfig drwxr-xr-x 649 root wheel 22066 May 1 23:05 python2.7 $ |
- (古い)2.7.10がデフォルトですが2.7.13が最新です。さらに言えばPythonにはバージョン2系と3系がありますが、いまからPythonを使いはじめるなら迷わず3系を使うべきです。
- (パーミッション)デフォルトのPythonでライブラリが追加される”/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7″は、所有者がroot(管理者)になっています。
手元のMacでPythonを動かす方法はいくつかありますが、あとあとトラブルの原因になるので、すぐに使えるデフォルトのPythonを本格的に使わない方がいいです。
Pythonインストール・Mac編【バージョン切り替え・アンインストールしやすい環境構築】
デフォルトのPythonを使い続けない方がいいと分かったところで、この項目では、おすすめのインストール方法を紹介します。
Homebrew -> pyenv -> Python 3.6.x -> venv
「仮想環境」を作って、その中でPythonの実行やライブラリの追加をする方法です。
この方法をおすすめするのは、「仮想環境」を作って「その中でなら何をしても大丈夫!」な状態を最初に作っておけば、Mac本体に悪影響を与えずに、何度でも失敗できるからです。
それでは、手順を具体的に見ていきましょう。※手元にある環境(OS X Yosemite 10.10.5)で確認しています
Xcode(準備)
Xcodeは、Appleが提供しているソフトウェア開発ツールです。App Storeからインストールしておきましょう。
以降の手順を進めるために必要になるので、XCodeのCommand Line Toolsをインストールします。
1 2 | # xcode-selectをインストール $ xcode-select --install |
Homebrew(準備)
Homebrewは、「Apple が用意していないあなたの必要なものをインストール」するためのツールです。
今回は、あとで説明するpyenvをインストールするために使います。
Homebrewのホームページにアクセスして、指示に従ってHomebrewをインストールします。
1 2 3 4 5 | # 下のスクリプトをターミナルに貼り付けて実行する $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 正常にHomebrewをインストールできたか確認する $ brew doctor |
pyenv(バージョン切り替え)
pyenvは、Pythonのバージョンを簡単に切り替えるためのツールです。
あとで「Pythonのバージョン2系が必要になった」としても、このツールを使って簡単にインストールできます。
Homebrewを使ってインストールしていきます。
cat << ‘EOS’ >> ~/.bash_profile … EOS
下で出てくるこのコマンドは、このまとまりで1つのコマンドとして、いっぺんに実行します。
「2つのコメントと2つのコマンドを、~/.bash_profileに追記する」という意味になっています。
1 2 3 4 5 | # pyenvさんに~/.pyenvではなく、/usr/loca/var/pyenvを使うようにお願いする export PYENV_ROOT=/usr/local/var/pyenv # pyenvさんに自動補完機能を提供してもらう if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # pyenvをインストール $ brew install pyenv # インストール中に表示された注意(Caveats)に従い、.bash_profileに2つのコマンドを追記する # 参考:https://qiita.com/crankcube@github/items/15f06b32ec56736fc43a $ ls -l ~/.bash_profile $ cat << 'EOS' >> ~/.bash_profile # pyenvさんに~/.pyenvではなく、/usr/loca/var/pyenvを使うようにお願いする export PYENV_ROOT=/usr/local/var/pyenv # pyenvさんに自動補完機能を提供してもらう if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi EOS # ~/.bash_profileに書いた内容を有効にする $ source ~/.bash_profile # インストールできたか確認 $ brew list | grep pyenv $ pyenv --version |
このような実行結果になれば大丈夫です。
1 2 3 4 5 | $ brew list | grep pyenv pyenv $ pyenv --version pyenv 1.2.7 $ |
Python 3.6.6(本体)
pyenvを使って、Pythonをインストールします。今回はPython 3.6.6をインストールすることにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # インストールできるPythonの一覧を確認する $ pyenv install -l # 3.6.6をインストールする $ pyenv install 3.6.6 # いま使っているPythonのバージョンを確認する $ pyenv versions # いまインストールした3.6.6を使うように設定する $ pyenv global 3.6.6 # 確認 $ pyenv versions $ python |
このような実行結果になれば大丈夫です。
1 2 3 4 5 6 7 8 9 | $ pyenv versions system * 3.6.6 (set by /usr/local/var/pyenv/version) $ python Python 3.6.6 (default, Sep 4 2018, 22:21:49) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> $ |
venv(仮想環境の作成)
venvは、Python標準の仮想環境ツールです。
インターネットで調べると他にもいろいろな仮想環境ツールが出てきますが、Python3.5以降ではvenvを使いましょう。
バージョン 3.6 で非推奨: Python 3.3 と 3.4 では、仮想環境の作成に推奨していたツールは pyvenv でしたが、Python 3.6では非推奨です。
バージョン 3.5 で変更: 仮想環境の作成には、 venv の使用をお勧めします。
28.3. venv — 仮想環境の作成 — Python 3.6.6 ドキュメント
1 2 3 4 5 6 7 8 9 10 | # 自分のユーザ名を確認する(これ以降の(ユーザ名)はこの実行結果で置き換えて読み進める) $ whoami # 例えば、/Users/(ユーザ名)/python_env というディレクトリを作ってそこに移動する $ cd /Users/(ユーザ名)/; pwd $ mkdir -p python_env $ cd python_env; pwd # Python 3.6.6に付いているvenvコマンドを使って、/Users/(ユーザ名)/python_env というディレクトリの中に、py3envという名前の仮想環境を作成する $ python -m venv py3env |
作成した仮想環境の有効化・無効化
ここまでで、Pythonを使いはじめる準備が整いました。
これからPythonを使うときは、必ず仮想環境py3envを有効化してから使うことにします。
といっても、コマンド一つでできるので簡単です。
1 2 3 4 5 6 7 8 9 | # 仮想環境py3envを有効化する $ cd /Users/(ユーザ名)/python_env; pwd $ source py3env/bin/activate # Pythonを使う # 仮想環境py3envを無効化する (py3env) $ deactivate |
少し長くなってしまいましたが、このように「仮想環境」を作って、その中でPythonの実行やライブラリの追加をするのがおすすめの方法です。
Pythonを長く安全に使える方法・Mac編【実践知識】
ここまで準備をしておくと、Pythonを長く安全に使える仕組みができあがっています。
「その中でなら何をしても大丈夫!」な「仮想環境」ができているので、あとは細かいことを気にせず、気軽にアップデートやアンインストールして動作環境を整えられるからです。
実際にPythonを使いながら、気になるであろう疑問点をまとめます。実践寄りの知識として、必要に応じて参考にしてください。
実際に使ってみないと気づかない問題点とか疑問とかあるよね・・・
そうですね。自分自身も時々壁にぶつかるので、その経験も踏まえてまとめておきました。半年もすれば忘れてしまう内容も多いと思うので、必要な時に見返してもらえるとうれしいです。
FAQ: どのPythonを使っているか忘れた
“which python”で確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # バージョン切り替えツール「pyenv」を使っているのを思い出した $ which python /usr/local/var/pyenv/shims/python # pyenvを使って、3.6.6をインストールしたんだった $ pyenv versions system * 3.6.6 (set by /usr/local/var/pyenv/version) $ # なんかディレクトリを作ってその中に仮想環境を作ったんだった $ cd /Users/(ユーザ名)/python_env; pwd # 有効化しよう $ source py3env/bin/activate |
FAQ: 仮想環境の中にライブラリをインストールしたい
ライブラリをインストールする必要があるときには、”pip install”で一つずつインストールしていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 行列・線形代数 (py3env) $ pip install numpy # 数式処理 (py3env) $ pip install scipy # グラフなどの描画 (py3env) $ pip install matplotlib # データ操作 (py3env) $ pip install pandas # 機械学習 (py3env) $ pip install scikit-learn |
FAQ: 何のライブラリを入れたか忘れた
今インストールしているライブラリを”pip freeze -l”で確認できます。
この結果をrequirements.txtという名前のテキストファイルで保存しておくと、Pythonをアップデートしたり、環境を作り直したいと思った時に便利です。
※requirements.txtの使い方は、この後の項目で説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # 確認 (py3env) $ pip freeze -l APScheduler==3.5.3 certifi==2018.8.24 chardet==3.0.4 ez-setup==0.9 idna==2.7 mysql-connector-python==8.0.12 protobuf==3.6.1 pytz==2018.5 requests==2.19.1 six==1.11.0 tzlocal==1.5.1 urllib3==1.23 (py3env) $ # 結果を、requirements.txtという名前のテキストファイルに保存しておく (py3env) $ pip freeze -l > requirements.txt |
FAQ: インストールしたライブラリをアップデートしたい
1 2 3 4 5 6 7 8 | # 更新可能なパッケージ一覧を表示 (py3env) $ pip list -o # 全部最新にしてよければ以下を実行 (py3env) $ pip list -o | awk '{print $1}' | xargs pip install -U # 依存関係が壊れていないか確認 (py3env) $ pip check |
FAQ: Pythonをアップデートしたい
例えば、Pythonのバージョンを3.6.6から3.7.yに上げたいときの手順を紹介します。
いままでの仮想環境py3envはそのまま残して、新しい仮想環境py37envでPython3.7.yを使えるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # py3envの中で、requirements.txtを作っていなければ作る (py3env) $ cd /Users/(ユーザ名)/python_env/; pwd (py3env) $ pip freeze -l > py3env/requirements.txt # 仮想環境py3envを無効化しておきます (py3env) $ deactivate # pyenvで3.7.yを新たにインストール $ pyenv install -l $ pyenv install 3.7.y $ pyenv versions $ pyenv global 3.7.y $ python # venvで仮想環境py37envの作成・有効化 $ cd /Users/(ユーザ名)/python_env; pwd $ python -m venv py37env $ source py37env/bin/activate (py37env) $ # 仮想環境py3envで作った requirements.txt を仮想環境py37envのディレクトリにコピー (py37env) $ cp -p py3env/requirements.txt py37env/requirements.txt # 仮想環境py3envでインストールしていたライブラリを py37envにそのままインストール (py37env) $ pip install -r py37env/requirements.txt |
FAQ: 失敗したのでアンインストールして最初からやり直したい
仮想環境は、そのディレクトリを消すだけでOKです。venvを使って新しく仮想環境を作り直せます。
1 2 3 4 5 6 7 8 9 10 11 | # 仮想環境py3envを無効化しておきます。 (py3env) $ deactivate # 仮想環境py3envディレクトリを消せばOK $ cd /Users/(ユーザ名)/python_env; pwd $ rm -r py3env # 新しく仮想環境を作ります $ python -m venv py3envnew $ source py3envnew/bin/activate (py3envnew) $ |
pyenvでインストールしたPythonをアンインストールするには、以下のようなコマンドを使います。
1 2 3 | # pyenvでインストールしたPythonを確認してアンインストール $ pyenv versions $ pyenv uninstall 3.6.6 |
以上、FAQの形で実践知識をいくつか紹介しました。
このように、気軽にアップデートやアンインストールして動作環境を整えられるので、長く安全に使える仕組みになっています。
MacにPythonをインストールして、楽しいPythonライフを送りましょう!
関連記事:こちらも読まれています
Pythonを快適に使いこなすMac環境【現役エンジニアおすすめはPro 13インチ】
【保存版】Pythonのdatetimeで日付/時間を操作【実務での使用例とハマりどころも解説】
ありがとう!
[…] nMacでは元からpythonが入っているけど、【2018年版】Pythonインストール・Mac編【長く安全に使える方法】によれば、”(バージョンアップ時などの)パーミッションの問題”, “ライブラリが消えることがある”といった問題があるらしいそれはあかんやん! […]
[…] 【2019年版】Pythonインストール・Mac編【長く安全に使える方法】|投資エン… […]
「仮想環境」で開発したほうが良い理由はなんとなくわかるのですが、ファイルの入出力をしたい場合、「どこに」読むファイルを置くのか、書き出すのかをどう考えればよいでのしょうか?「仮想環境」の具体的なイメージが掴めなくて、よく理解できずにいます。
やりたいことはWordファイルなどの読み書きです。
ここに書いてよいのかわからなかったのですが…よろしくお願いします。
それと、Xcodeは何のためにインストールするのでしょうか?
むー 様
コメントありがとうございます。ご不明点を共有していただいて助かります。
「仮想環境」といっても、VirtualBoxなど仮想化ソフトのように「OSレベルの仮想環境」ではなく「用途に応じた専用のPython実行環境」を作っているだけですので、ファイルの読み書きについて、ファイルを置く場所は通常どおり作業ディレクトリ(やその他お好みの場所)で問題ありません。
(py3env) $ cat /Users/XXXXXX/sandbox/test.txt
こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。
(py3env) $
記事中で説明しなかったVirtualenvに関するリンクではありますが、「仮想環境」の説明として参考にご覧ください。
https://www.python.jp/install/windows/virtualenv.html
Xcodeは、MacでHomebrewを使う前提条件として必要なので、下記リンク(と注意書き3)を参考に、App StoreからのXCodeとコマンドラインツールの両方をインストールしています。
https://docs.brew.sh/Installation#macos-requirements
Tkinterが利用できません。。。どのようにすれば良いでしょうか
コメントありがとうございます。
申し訳ありませんがTkinterは経験がほとんどなく、お力になれそうにありません。
なぜ、PYENV_ROOTのパスを下記のとおりに変更したのでしょうか?
~/.pyenvだと、問題がありますか?
># pyenvさんに~/.pyenvではなく、/usr/loca/var/pyenvを使うようにお願いする
export PYENV_ROOT=/usr/local/var/pyenv
特に問題があったというよりは、検証当時、インストール中に表示された注意(Caveats)、また引用元(https://qiita.com/crankcube/items/15f06b32ec56736fc43a)の当時の記載に従ったものと思われます。
GitHub(https://github.com/pyenv/pyenv)等を見る限りでは、~/.pyenv ($HOME/.pyenv) がデフォルトのようですね。
ちなみに、以下のような理由でPYENV_ROOTを変更している事例を見つけたので、共有します。
http://bcl.sci.yamaguchi-u.ac.jp/~jun/notebook/python/install-pyenv/