CentOSにpyenvを利用してAnacondaをインストール
pyenvを利用してAnacondaをインストールしたメモです。
Anaconda
今までpythonの機械学習系ライブラリを個別にインストールしてきましたが、
Anacondaを使用すると、pythonと機械学習で必要なライブラリを
まとめて一気にインストールできます。
https://www.continuum.io/why-anaconda
機械学習系の重要なライブラリはほぼすべてインストールされます(150以上)。
NumPy,SciPy,scikit-learn,matplotlib,pandas,IPython,conda,……
など、機械学習で必要となるライブラリを一気にインストールできます。
pyenv
今回はAnaconda3をインストールしますが、同時にpython3.5がインストールされます。
CentOSにデフォルトでインストールされているpython2はそのままにするため、
pyenvを利用してインストールします。
pyenvを利用すると、複数のバージョンのpythonを共存させて
簡単に切り替えることができます。
今回はCentOS6への手順ですが、CentOS7でも同様の手順でいけるはずです。
依存関係インストール
まずは、下記に書いてある通り、必要な依存関係をインストールします。
https://github.com/yyuu/pyenv/wiki
後ほどgitでpyenvを取得するので、gitもインストールしておきます。
# yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git
pyenvインストール
gitでリポジトリから取得します。
# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# vi .bash_profile
.bash_profile
# pyenv export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
bash_profileを反映。
# source .bash_profile
下記にように表示されればOKです。
# pyenv version system (set by /root/.pyenv/version)
Anacondaインストール
インストールできるAnacondaのバージョンを一覧表示します。
# pyenv install --list Available versions: : anaconda-1.4.0 anaconda-1.5.0 anaconda-1.5.1 anaconda-1.6.0 anaconda-1.6.1 anaconda-1.7.0 : : anaconda3-2.2.0 anaconda3-2.3.0 anaconda3-2.4.0 anaconda3-2.4.1 anaconda3-2.5.0 anaconda3-4.0.0 :
今回は最新のanaconda3-4.0.0をインストールします。
pyenv installコマンドでインストールします。
# pyenv install anaconda3-4.0.0
pythonのバージョンを確認してみると、
まだ元々OSに入っているpython2.6.6が表示されます。
# python --version
Python 2.6.6
pyenv versionsコマンドで利用可能なバージョンが表示されます。
systemとなっているのは元々入っていたpython2.6.6です。
「*」がついているのが現在使用しているバージョンです。
# pyenv versions * system (set by /root/.pyenv/version) anaconda3-4.0.0
下記コマンドでanaconda3-4.0.0に切り替えます。
# pyenv global anaconda3-4.0.0 # pyenv rehash
バージョンを表示すると3.5.1に切り替わっています。
# python --version Python 3.5.1 :: Anaconda 4.0.0 (64-bit)
再度下記pyenvコマンドでバージョンを表示してみます。
anaconda3-4.0.0に「*」がついて切り替わっているのがわかります。
# pyenv versions system * anaconda3-4.0.0 (set by /root/.pyenv/version)
systemに切り替えてみます。
# pyenv global system
バージョンが2.6.6に戻っています。
# python --version
Python 2.6.6
確認してみると、systemに「*」がついて切り替わっているのがわかります。
# pyenv versions * system (set by /root/.pyenv/version) anaconda3-4.0.0
condaでのパッケージ管理
condaはpipに代わるAnacondaのパッケージマネージャです。
condaを使う場合、まずcondaコマンドでconda自身をアップデートします。
# conda update conda # conda --version conda 4.0.5
conda list
conda listでインストールされているすべてのパッケージとバージョンが一覧表示されます。
# conda list packages in environment at /root/.pyenv/versions/anaconda3-4.0.0: alabaster 0.7.7 py35_0 anaconda 4.0.0 np110py35_0 anaconda-client 1.4.0 py35_0 anaconda-navigator 1.1.0 py35_0 argcomplete 1.0.0 py35_1 astropy 1.1.2 np110py35_0 babel 2.2.0 py35_0 beautifulsoup4 4.4.1 py35_0 bitarray 0.8.1 py35_0 blaze 0.9.1 py35_0 bokeh 0.11.1 py35_0 boto 2.39.0 py35_0 bottleneck 1.0.0 np110py35_0 cffi 1.5.2 py35_0 chest 0.2.3 py35_0 cloudpickle 0.1.1 py35_0 clyent 1.2.1 py35_0 colorama 0.3.7 py35_0 conda 4.0.5 py35_0 conda-build 1.20.0 py35_0 conda-env 2.4.5 py35_0 conda-manager 0.3.1 py35_0 configobj 5.0.6 py35_0 cryptography 1.3 py35_0 curl 7.45.0 0 cycler 0.10.0 py35_0 cython 0.23.4 py35_0 : : :
特定のパッケージを指定して表示することも可能
# conda list scikit-image packages in environment at /root/.pyenv/versions/anaconda3-4.0.0: scikit-image 0.12.3 np110py35_0
ワイルドカードも使えるようです。
# conda list scikit-* packages in environment at /root/.pyenv/versions/anaconda3-4.0.0: scikit-image 0.12.3 np110py35_0 scikit-learn 0.17.1 np110py35_0
conda search
conda searchでパッケージを検索します。
デフォルトでは http://anaconda.org から検索するようです。
# conda search cdecimal
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
cdecimal 2.3 py26_0 defaults
2.3 py27_0 defaults
2.3 py33_0 defaults
2.3 py34_0 defaults
conda install
simplejsonというパッケージをインストールしてみます。
まずconda listでまだインストールされていないことを確認。
# conda list simplejson packages in environment at /root/.pyenv/versions/anaconda3-4.0.0:
conda searchでパッケージが存在する事を確認。
# conda search simplejson
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
simplejson 3.8.0 py27_0 defaults
3.8.0 py34_0 defaults
3.8.0 py35_0 defaults
3.8.1 py27_0 defaults
3.8.1 py34_0 defaults
3.8.1 py35_0 defaults
3.8.2 py27_0 defaults
3.8.2 py34_0 defaults
3.8.2 py35_0 defaults
conda installでインストールします。
# conda install simplejson Using Anaconda Cloud api site https://api.anaconda.org Fetching package metadata: .... Solving package specifications: ......... Package plan for installation in environment /root/.pyenv/versions/anaconda3-4.0.0: : : : Linking packages ... [ COMPLETE ]|#################################################################| 100%
conda listでインストールされたことを確認。
# conda list simplejson packages in environment at /root/.pyenv/versions/anaconda3-4.0.0: simplejson 3.8.2 py35_0
conda update
conda updateでパッケージをアップデートできます。
# conda update simplejson Using Anaconda Cloud api site https://api.anaconda.org Fetching package metadata: .... : : simplejson 3.8.2 py35_0
conda remove
conda removeでパッケージの削除ができます。
# conda remove simplejson Using Anaconda Cloud api site https://api.anaconda.org Fetching package metadata: .... Solving package specifications: ......... Package plan for package removal in environment /root/.pyenv/versions/anaconda3-4.0.0: : : Unlinking packages ... [ COMPLETE ]|#################################################################| 100%
確認するとちゃんと消えてます。
# conda list simplejson packages in environment at /root/.pyenv/versions/anaconda3-4.0.0:
Anacondaのアップデート
anacondaをアップデートする場合、conda updateでアップデートします。
# conda update anaconda
ただし、上記コマンドでは各パッケージはアップデートされません、
パッケージをアップデートする場合は下記コマンドを実行します。
# conda update --all
ライブラリの動作確認
IPythonでNumPy,pandasがちゃんと動くか軽く確認してみます。
# ipython In [1]: import numpy as np In [2]: np.random.randn(10) Out[2]: array([ 0.7322451 , 0.19859575, -2.5222557 , -1.2713138 , 0.0678604 , -0.30271752, 0.93476445, -0.82120115, -0.34360235, -0.11382497]) In [3]: from pandas import Series, DataFrame In [4]: Series(np.random.rand(5)) Out[4]: 0 0.744291 1 0.154818 2 0.069733 3 0.638035 4 0.890517 dtype: float64 In [5]: DataFrame({'num': [1, 2, 3], 'char': ['A', 'B', 'C']}) Out[5]: char num 0 A 1 1 B 2 2 C 3
だいじょうぶそうです。
終わり。