Python で開発するわけじゃないけど、Hubot を使ったりするときにサーバ操作のための自動化ツールとして Fabric をつかうことになることが度々あり pip
が必要になったりする。
最近だと Google の人工知能ライブラリ TensorFlow を試すためにいれてる人も多そう。
改めて現時点のモダンな Python 環境構築手順をまとめる。
対象物
- Python 自体のバージョン管理のために
pyenv
- Python は標準の
Python.org
のものではなくAnaconda
またはMiniconda
- パッケージ管理ツールとして
pip
ではなくconda
- プロジェクト毎に Python 環境を変えるための
pyenv-virtualenv
は個人的に不要- 一般的には開発で Python3 使うけど Fabric 実行のために Python2 必要みたいなケース多いはず
- そういうときに入れればいい
- インストール対象
環境
- OS X El Capitan バージョン 10.11.6
インストール
pyenv
は Homebrew 経由でいれる。
$ brew install pyenv
設定
bash
を使ってる場合は .bash_profile
に追記する必要あるけど FishShell と fisherman
を使っているのでプラグインを入れるだけ。
$ fisher pyenv
インストール可能な Python 一覧
Python3 はリリースから 8 年経つらしいが後方互換性がないせいで、Python2 が今でも現役。最新は以下の通り。
新規開発なら 3 系を入れれば良いが、今回の目的の Fabric は 2.5〜2.7 しか対応してないため、2 系の最新をいれることにする。
pyenv
では標準の Python, Anaconda, Miniconda, PyPy, Stackless Python と 5 種類の Python をインストールできる。
$ pyenv install --list (略) 2.7.10 2.7.11 2.7.12 (略) 3.5.2 3.6.0b1 3.6-dev (略) anaconda2-4.0.0 anaconda2-4.1.0 anaconda2-4.1.1 (略) anaconda3-4.0.0 anaconda3-4.1.0 anaconda3-4.1.1 (略) miniconda2-3.19.0 miniconda2-4.0.5 miniconda2-4.1.11 (略) miniconda3-3.19.0 miniconda3-4.0.5 miniconda3-4.1.11
Anaconda と Miniconda の違い
公式のFAQ によると
What is Miniconda?
Miniconda includes conda, Python and a small number of other useful packages including pip, zlib and a few others.
ミニコンダは conda
と Python
と pip
と zlib
等を含んだ小さなパッケージという扱い。
何が入っているかはインストール後に conda list
で確認することができる。
conda list # packages in environment at /Users/jnst/.pyenv/versions/miniconda2-latest: # conda 4.2.12 py27_0 conda-env 2.6.0 0 enum34 1.1.6 py27_0 openssl 1.0.2j 0 pip 9.0.1 py27_0 pycosat 0.6.1 py27_1 pycrypto 2.6.1 py27_4 python 2.7.12 1 readline 6.2 2 requests 2.11.1 py27_0 ruamel_yaml 0.11.14 py27_0 setuptools 27.2.0 py27_0 sqlite 3.13.0 0 tk 8.5.18 0 wheel 0.29.0 py27_0 yaml 0.1.6 0 zlib 1.2.8 3
全部入りが Anaconda で、データサイエンティスト向けのパッケージが充実してるらしいけど自分は必要ないため、Miniconda をいれることにする。
Python2 系の最新をインストール
バージョン指定もできるが、末尾に latest で最新をいれる書き方もできる。
$ pyenv install miniconda2-latest
利用する Python 環境を変更
global
コマンドで設定。
$ pyenv global miniconda2-latest
利用中のバージョン確認
versions
コマンドでインストールされている環境一覧がわかる。
$ pyenv versions system * miniconda2-latest (set by /Users/jnst/.pyenv/version)
$ python -V Python 2.7.12 :: Continuum Analytics, Inc.
conda の使い方
まず conda
は pyenv
のように Python 自体のバージョン管理もできるが、pyenv
で管理する方が楽そうなので conda
はパッケージ管理マネージャのみとして利用することにする。
いろいろインストールして何かよくわからなくなったら pyenv uninstall <version>
すればキレイさっぱりと最初からやり直せる。
コマンド一覧の確認。
$ conda help
Fabric を探す。
$ conda search fabric
Fabric の最新をインストール。
$ conda install fabric
conda install fabric=1.11.1
のようなバージョン指定もできる。公式ドキュメントもわかりやすい。
Fabric が使えることを確認。
$ fab -V Fabric 1.11.1 Paramiko 1.16.0