Anacondaもpyenv|venvも使わずにPythonのデータ分析環境を構築する (macOS)
最近、データ分析の関係で少しPythonを使うようになったので、改めて環境構築について考えてみた。
ネット上の情報を漁ってみると概ねAnaconda一択というのが最近のトレンドの様子。確かにWindowsならAnaconda一択だろうし、自分自身、色々と説明するのが面倒だから、初心者に教えるときはとりあえずAnaconda入れておけと言ってしまう。
とはいえ、モジュールのインストールにはpipがあるし、仮想環境を使いたいならvenvを使ってしまえばいい。そもそも、今どき開発目的であればdockerなりvagrantなりを使って丸ごと分離してしまう方が筋が良く、データ分析用途であれば手元に最新のPython3環境があれば事足りる。MacでAnacondaを入れようとするとシステムPythonやHomebrew Pythonとの衝突を気にする必要があって、その解決のためにpyenvを入れてみたりと、物事を余計に複雑にしているような気がしないでもない。
ということで、生Pythonを使ってnumpy、pandas、Jupyterのような基本的なデータ分析環境をmacOS上に構築してみた。生Pythonとは言ってもシステムPythonは触りたくないし、グローバル環境もみだりにいじりたくはない。そういった条件で環境を構築したときに、現代的にはどの程度作業をsimplifyできるだろうか、というのがこの記事のモチベーション。
具体的な手順 (結論)
結論から言うと、次の手順で環境の構築は終わる。
-
Homebrew Pythonをインストール
brew install python3
-
.profile、.zshenvなどに以下を追記して、ユーザーローカルでインストールされるスクリプト類にPATHを通す。
PATH=$(python3 -m site --user-base)/bin:$PATH; export PATH
-
pipの
--user
フラグを使ってよく使いそうなモジュール群をユーザーローカル環境にインストールする。python3 -m pip install --user --upgrade pip numpy scipy pandas matplotlib scikit-learn jupyter tensorflow
以上。簡単だ。
jupyter notebook
と叩けば普通にブラウザーが立ち上がってNotebookが使える。numpyやpandasはもちろん、TensorFlowも使えるしTensorBoardも問題なく使える。
解説
上の手続き、要はpipの--user
フラグを使ってユーザーのホームディレクトリに必要なモジュールをインストールしただけである。
最近のPython (というかスクリプト言語全般)は賢いので、ユーザー領域にモジュールをインストールするのがすごく簡単になっている。細かく環境変数をセットしなくても、デフォルトでモジュールをそれっぽいところに放り込んでくれるし、それっぽいところに放り込んでおけばデフォルトで読み込んでくれる。Macであればデフォルトで以下のとおり~/Library
配下に展開されるし、その他のUnix系であれば~/.local
以下に放り込まれる。
% which jupyter /Users/liosk/Library/Python/3.6/bin/jupyter
--user
を使えばグローバルな環境は汚さないのでsudoは必要ないし、環境が散らかってきたと思えば~/Library/Python
以下を丸ごと消してしまえば白紙の状態に戻すことができる。
応用編
実際には、~/Library/Python
以下に置くのがいつもGoodというわけではないし、Linuxで~/.local
以下に置かれると~/.local
を使う他のプログラムと混ざってしまって、消したくなっても消すに消せなくなる。ということで、環境変数を少しいじって挙動をカスタマイズすることになる。
Pythonのユーザー領域インストール(user installation schemeと呼ぶらしい)の仕様については以下の文書群が詳しい。
- PEP 370 -- Per user site-packages directory
- 29.13. site - Site-specific configuration hook - Python 3.6.3 documentation
--user
でのインストール先を変えたい場合は環境変数PYTHONUSERBASE
を設定してあげれば良い。.zshenvでの設定例は以下のとおり。
PYTHONUSERBASE="$HOME/.local_python3"; export PYTHONUSERBASE PATH=$(python3 -m site --user-base)/bin:$PATH; export PATH PIP_USER=true; export PIP_USER
PIP_USER
はpipの挙動を制御するための環境変数で、trueに設定しておけば--user
の使用がデフォルトになる。ただし、venvと併用するとおかしなことになるので、venvを多用する人にはおすすめできない。
まとめ
無理してAnaconda使わなくても、ユーザーインストールで良くないですか?
おまけ (Ubuntuでは)
Ubuntuでも、最初のPythonインストールをHomebrewではなくapt-getに変えれば概ね同じように動く。
apt-get install python3 python3-pip python3-tk
おまけ (Windowsでは)
なんと最近のWindowsではWSL (Windows Subsystem for Linux; いわゆるBash on Windows)でUbuntuが動くので、Ubuntu上で上記と同様にapt-getでPythonをインストールすれば同じように使うことができる。素のWSLの場合、jupyter notebook
と叩いてもブラウザは立ち上がらないものの、表示されるURLをブラウザにコピペすれば普通にJupyter Notebookが使える。時代は変わった。
関連記事
- Anacondaもpyenv|venvも使わずにPythonのデータ分析環境を構築する (macOS)
- OpenSSLでオレオレ認証局(CA)とオレオレ証明書を作る
- コマンドの結果を画面とパイプの両方に渡す方法
- JavaScriptでJIS丸め
- MS Excelで端数処理 2: ワークシート関数で切り上げ・切り捨て・四捨五入・JIS丸め
トラックバック URL
- http://liosk.blog103.fc2.com/tb.php/217-bff768f2