そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

OS X上にPythonの学習環境を整える(anyenv、pyenv、virtualenv)

最近の機械学習の流行もあってかPython環境を整える系の記事がいっぱい出回ってて「コイツラまた環境構築してるよ・・・」なんて揶揄されてたりするけど、調べてみると色々な方法があるようで、なるほど確かに人によって状況によって最適な手段は変わってくるのだろうし初心者が躓きかねない気もする。

(前職のPerlで四苦八苦したところだけど、)LLのランタイム切り替えやパッケージ管理はちゃんと把握しないで使うとしっちゃかめっちゃかになってしまうので、自分なりのやり方を記録しておこうと思う。


anyenvの導入

複数のLLを使う身としては個別に*envを導入するよりも、統合的に扱えるanyenvを導入する方向で。

$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ anyenv
anyenv
Usage: anyenv <command> [<args>]

Some useful anyenv commands are:
   commands            List all available anyenv commands
   local               Show the local application-specific Any version
   global              Show the global Any version
   install             Install a **env
   uninstall           Uninstall a specific **anv
   version             Show the current Any version and its origin
   versions            List all Any versions available to **env

See `anyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/riywo/anyenv#readme


pyenvの導入

pythonランタイムのバージョン管理のためにpyenvを導入する。perlでいうところのplenvにあたるものだろう。

$ anyenv install pyenv
$ exec $SHELL -l
$ pyenv -v
pyenv 1.1.3-26-g09bc868


virtualenvの導入

同一バージョンのランタイム内で異なるパッケージ環境を管理するためにvirtualenvを導入する。専用のパッケージ環境を扱うというニュアンスでいえばperlのCartonと近い気もするけど、こっちはプロジェクト単位というわけではないあたりが「学習環境」の管理としては使いまわしやすくてやりやすいように思う。

anyenvによってpyenvを導入したので、ググってすぐに引っかかる情報なんかとディレクトリが違うことに注意が必要。

$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ exec $SHELL -l


作業ディレクトリの作成

※予めxcode周りのインストール必要そう

$ xcode-select --install

そんなこんなでpython 3.6.2を入れてみる。

$ pyenv install 3.6.2

3.6.2を用いるpylearnという名前の環境を定義する。

$ pyenv virtualenv 3.6.2 pylearn

適当に作業ディレクトリを作成して移動した上で、そのディレクトリの環境としてpylearnを設定する。

$ mkdir -p ~/src/pylearn
$ cd ~/src/pylearn
$ pyenv local pylearn
(pylearn) $ python --version
Python 3.6.2

こうすることで、作業ディレクトリ内ではpylearn環境としてpythonを扱うことができる。

ちなみにディレクトリを移動すると元のpythonに戻る。

$ cd ~/
$ python --version
Python 2.7.9

入門 Python 3

入門 Python 3


Docker推しの立場としてはよもや全てコンテナ上で実行すれば良いんじゃないかという気持ちもあるけど、まあ一旦は保守的な形で。