Help us understand the problem. What is going on with this article?

MacでAnaconda/Jupyter Notebook をつかえる環境を構築する(含 Homebrew,pyenv,Pythonのインストール)

More than 1 year has passed since last update.

Pythonでデータ分析とかしてると、Jupyter Notebook っていうブラウザ上のコンソールでPythonを操作するサンプルなどがネットで出てきます。。それらを実行するJupyter Notebook環境をMacで構築するときの手順メモです。

Jupyter Notebook は、データ分析・科学計算などのプラットフォームであるAnacondaに同梱されているモノをインストールしようと思います。

前準備

PythonはPython2系と3系があって、Macにはデフォルトで2系がインストールされています。で、その環境を壊すことなく別バージョンのPython(Python3やAnacondaのこと)を使用するには、pyenvというバージョン切替ツールをつかうことが多いです。そしてそして、そのpyenvは MacのパッケージマネージャであるHomebrew経由でインストールします。

Homebrewのインストール

参考: https://brew.sh/index_ja

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew --version
Homebrew 1.8.2
Homebrew/homebrew-core (git revision 6f74; last commit 2018-11-11)
$

以上です。

pyenvのインストール

早速Homebrewでpyenvを入れます。

$ brew install pyenv
==> Downloading https://homebrew.bintray.com/bottles/pyenv-1.2.8.mojave.bottle.t
######################################################################## 100.0%
==> Pouring pyenv-1.2.8.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/pyenv/1.2.8: 612 files, 2.4MB

インストールはOK。.bash_profileに以下を追加します。

$ cat << '__EOF__' >> ~/.bash_profile
## Set path for pyenv
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi
__EOF__
$
$ cat ~/.bash_profile
## Set path for pyenv
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi
$ source ~/.bash_profile
$ pyenv --version
pyenv 1.2.8
$

以上で、pyenvのインストール完了です。

pyenvでのPythonのセットアップ

$ python --version
Python 2.7.10

Macには、このPythonが標準で入っています。

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)

pyenvでインストールできるPythonを一覧してみます。

$ pyenv install --list
Available versions:
  ...
  3.6.7
  3.7.0
  3.7-dev
  3.7.1
  3.8-dev
  ...
  anaconda3-5.2.0
  anaconda3-5.3.0

ためしに3.7.1を入れてみます。

$ pyenv install 3.7.1
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
python-build: use readline from homebrew

Installed Python-3.7.1 to /Users/xxx/.pyenv/versions/3.7.1

下記のコマンドで、標準で稼働するPythonを切り替えます。

$ pyenv global 3.7.1
$ pyenv versions
  system
* 3.7.1 (set by /Users/xxx/.pyenv/version)
$  python --version
Python 3.7.1

以上でPythonのバージョン切替を行うための環境のセットアップは完了です。

Anacondaのインストール

いよいよAnacondaです。pyenv上にインストールします。

$ pyenv install anaconda3-5.3.0
Downloading Anaconda3-5.3.0-MacOSX-x86_64.sh...
-> https://repo.continuum.io/archive/Anaconda3-5.3.0-MacOSX-x86_64.sh
Installing Anaconda3-5.3.0-MacOSX-x86_64...
Installed Anaconda3-5.3.0-MacOSX-x86_64 to /Users/xxx/.pyenv/versions/anaconda3-5.3.0

$ pyenv versions
  system (set by /Users/xxx/.pyenv/version)
* 3.7.1
  anaconda3-5.3.0
$ pyenv global anaconda3-5.3.0
$ pyenv versions
  system
  3.7.1
* anaconda3-5.3.0 (set by /Users/xxx/.pyenv/version)
$

$ python --version
Python 3.7.0

Anacondaを使用できる環境の構築が完了です。

Anacondaの分離環境を構築する

通常のPythonにはプロジェクトごとに仮想環境(分離環境)を構築するための venv コマンドというのが用意されていますが、Anacondaにも同じような環境分離ツール conda がありますので、それを使って分離環境を構築します。

例として、以下のコマンドで tmpという名前をつけた Python 3.7.2のの分離環境を構築します。

$ conda create --name tmp python=3.7.2   <- バージョン指定も出来る
.....
    zeromq:                             4.3.1-h0a44026_3
    zict:                               0.1.4-py37_0
    zipp:                               0.3.3-py37_1
    zlib:                               1.2.11-h1de35cc_3
    zstd:                               1.3.7-h5bba6e5_0

Proceed ([y]/n)?

...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > source activate tmp
#
# To deactivate an active environment, use:
# > source deactivate
$

分離環境が構築できました。分離環境の中に入るには下記のコマンドで。

$ source activate tmp
pyenv: activate: command not found

怒られましたorz。。パスが通ってないからっぽいので、、、

$ ls -lrt $PYENV_ROOT/versions/
drwxr-xr-x  24 xxx  staff  816  4  7 19:17 anaconda3-5.3.0

$ source $PYENV_ROOT/versions/anaconda3-5.3.0/bin/activate  tmp
(tmp) $
(tmp) $ python --version
Python 3.7.2
(tmp) $ 

分離環境に入れました。。

その他コマンド

分離環境の一覧表示

$ conda info -e
# conda environments:
#
base                  *  /Users/xxx/.pyenv/versions/anaconda3-5.3.0
tmp                      /Users/xxx/.pyenv/versions/anaconda3-5.3.0/envs/tmp

$

ちなみに分離環境はpyenvからは下記のように見えるようです

$ pyenv versions
  system
  3.7.1
* anaconda3-5.3.0 (set by /Users/xxx/.pyenv/version)
  anaconda3-5.3.0/envs/tmp

中に入ってみてみると、、、

$ source /Users/xxx/.pyenv/versions/anaconda3-5.3.0/bin/activate  tmp
(tmp) $ pyenv versions
  system
  3.7.3
* anaconda3-5.3.0 (set by /Users/xxx/.pyenv/version)
  anaconda3-5.3.0/envs/tmp

(tmp) $ conda info -e
# conda environments:
#
base                     /Users/xxx/.pyenv/versions/anaconda3-5.3.0
tmp                   *  /Users/xxx/.pyenv/versions/anaconda3-5.3.0/envs/tmp

(tmp) $

分離環境から抜けるには

(tmp) $ source $PYENV_ROOT/versions/anaconda3-5.3.0/bin/deactivate
$ 

分離環境の削除コマンドはこちら。

$ conda remove -n tmp --all
Remove all packages in environment /Users/xxx/.pyenv/versions/anaconda3-5.3.0/envs/tmp:
...
Proceed ([y]/n)?
$

$ pyenv versions
  system
  3.7.1
* anaconda3-5.3.0 (set by /Users/xxx/.pyenv/version)
$

削除されました。

Jupyter Notebook を起動

最後にJupyter Notebookを起動します。

$ jupyter notebook
[I 18:37:54.077 NotebookApp] JupyterLab extension loaded from /Users/xxx/.pyenv/versions/anaconda3-5.3.0/envs/tmp/lib/python3.7/site-packages/jupyterlab
[I 18:37:54.077 NotebookApp] JupyterLab application directory is /Users/xxx/.pyenv/versions/anaconda3-5.3.0/envs/tmp/share/jupyter/lab
[I 18:37:54.079 NotebookApp] Serving notebooks from local directory: /Users/xxx
[I 18:37:54.079 NotebookApp] The Jupyter Notebook is running at:
[I 18:37:54.079 NotebookApp] http://localhost:8888/?token=xxxxxxx
[I 18:37:54.079 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 18:37:54.086 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///Users/xxx/Library/Jupyter/runtime/nbserver-44243-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=xxxxxxx

起動したようです。Webブラウザで上記URLにアクセスすればよさそうですね。
image.png

停止は Ctrl C で停止可能です。

まとめ

Anaconda/JupyterNotebookを使用するために、brew > pyenv > anaconda > condaの分離環境 > Jupyter っていうそこそこややこしい構図になってしまいましたが、分離した環境を作れることで、壊れたら消してまた構築するなど、便利な環境が構築できましたね。

おつかれさまでした。

関連リンク

masatomix
JavaEEの開発やリッチクライアント開発のアーキテクトが専門でしたが、最近はRPAとAIがメイン。。。RPAはUiPathとOrchestratorの構築が中心です。 FirebaseとかOAuth/OIDCなど新しいモノ、あと数学もすき。 最近は Uipath Friends っていうユーザコミュニティにも関わってます。 あ、UiPath Japan MVP 2019 す。
primebrains
プライム・ブレインズは、マネジメントスキルだけでなく、最新のITスキルを兼ね備えた技術者がお客様の立場でお客様と共に、成功に向けてプロジェクトを推進します。
http://www.primebrains.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした