Anacondaもpyenv|venvも使わずにPythonのデータ分析環境を構築する (macOS)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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できるだろうか、というのがこの記事のモチベーション。

具体的な手順 (結論)

結論から言うと、次の手順で環境の構築は終わる。

  1. Homebrew Pythonをインストール

    brew install python3
  2. .profile、.zshenvなどに以下を追記して、ユーザーローカルでインストールされるスクリプト類にPATHを通す。

    PATH=$(python3 -m site --user-base)/bin:$PATH; export PATH
  3. 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と呼ぶらしい)の仕様については以下の文書群が詳しい。

--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が使える。時代は変わった。

スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/217-bff768f2

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。