Python Anacondaのインストール手順

Python Anacondaのインストール手順

私のubuntuにはデフォルトでpythonが入っています。
多分linux macが入っているならデフォルトでインストールされていると思います。
今回はせっかくなのでPythonのインストールをpyenvで行いましょう。
pipでパッケージを導入し
更にanacondaをインストールしていきます。
最終的に開発はjupyter notebookで行う予定です。

Anacondaとは
Pythonのディストリビューションに当ります。
linuxのディストリビューションにはcentOS debian ubuntu etc…
Anacondaを導入することでPythonと一緒に様々なライブラリを一緒にインストールすることが出来ます。

まずは現状の把握から行いましょう。

デフォルトで入っているPythonのバージョン確認

python --version
python 2.7.15rc1

ターミナル上でpythone –versionを叩くとpythonのバージョンが返ってきます。
私のubuntuには2.7.15が入っているようです。

今回はPythonの3系を使いたいのでバージョンを上げていきます。
ついでに先程書いたとおりバージョン管理をpyenvに任せます。

pyenvの導入

pyenvとは複数バージョンのpythonをインストール・共存し、環境に合わせて切り替える為のツールと考えていただければ良いかと。
無理にpyenvを使う必要はないですし、メリットデメリットもある様なので少し調べてから導入すると良いでしょう。
ionicを導入でnodeをバージョン管理する際に使用したnvmの様な感覚でとらえています。
pyenvはgitからダウンロードしてくるようです。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

Command ‘git’ not found, but can be installed with:
sudo apt install git
早速gitが入ってないよと怒られたのでgitのインストールを行う。

sudo apt install git

インストール後再度gitコマンドを叩く
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

インストールが完了したら .bashrcでpathを追加してやります。

vim .bashrc
#一番下の行へ追加
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi

if~の部分はそれぞれで書き換えてみてください。
https://github.com/pyenv/pyenv#user-content-basic-github-checkout

参考にさせていただいたサイト
https://qiita.com/hashibiroko/items/60a685e50aebbde7f84e

導入後にシェルの再起動を行います。

exec "$SHELL"

今までsource .bashrcしてたけど厳密にこの2つは違うらしい。

exec $SHELL -l
シェルの再起動
sourceコマンド
シェルスクリプトを実行

導入可能なPythonのバージョンを確認

pyenv install -l
2.1.3
2.2.3
2.3.7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.6.4
3.6.5
3.6.6
3.6.7
3.7.0
3.7-dev
3.7.1
3.8-dev
~~~~~~~~~~~~~~~~~~~~~~~~
anaconda-1.5.1
anaconda-1.6.0
anaconda-1.6.1
anaconda-1.7.0
~~~~~~~~~~~~~~~~~~~~~~~~
pypy-1.7
pypy-1.8
pypy-1.9
pypy-2.0-src
pypy-2.0
pypy-2.0.1-src
pypy-2.0.1
pypy-2.0.2-src
pypy-2.0.2
pypy-2.1-src

ずらーっと並びます。
pypyっていう実行速度が速いらしいpythonがあるみたいですが、、とりあえずanaconda入れてしまいましょう。

anacondaの導入

pyenvを使ってインストールできるanacondaのバージョンをgrepで確認

pyenv install --list | grep anaconda

リストが並びます
anaconda3-4.2.0
anaconda3-4.3.0
anaconda3-4.3.1
anaconda3-4.4.0
anaconda3-5.0.0
anaconda3-5.0.1
anaconda3-5.1.0
anaconda3-5.2.0
anaconda3-5.3.0

とりあえず最新のanaconda3-5.3.0を入れておきます。

pyenv install anaconda3-5.3.0

pyenvでデフォルトをanacondaに設定

pyenv global anaconda3-5.3.0
#バージョン確認
python --version
Python 3.7.0

pyenvでもバージョン確認します。

pyenv versions
system
3.8-dev
* anaconda3-5.3.0 (set by /home/box/.pyenv/version)

*が付いている方が現在当っているバージョンです。
anaconda3-5.3.0画選択されているので切り替わってますね。

ここからは蛇足.log
色々なモジュールが足りないなど有ったらこのlogを参考にしたら良いかも。

Python3系をインストールして消した話

pyenv install -l

3.6.6
3.6.7
3.7.0
3.7-dev
3.7.1
3.8-dev

とりあえずver 3.8-devとか入れておこうかな

インストールしましょう

pyenv install 3.8-dev 

多分失敗する

zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1126: recipe for target 'install' failed
make: *** [install] Error 1

zlib not available
約:zlibが無いよ

zlibとは何か

zlibはデータの圧縮、解凍を行う為のライブラリです。
ところでなぜ圧縮に対して解凍なんでしょうね。解凍レンジの名残でしょうか。

ではzlibをインストールしてやります。

sudo apt-get install zlib1g-dev

改めて

pyenv install 3.8-dev

再度pyenvコマンドでインストールを進めます。

ちなみにめっちゃ遅いです。
コーヒーでも飲みながらインストールを待っていると、再びエラーを吐きます。
error code

以下のパッケージが自動でインストールされましたが、もう必要とされていません:
fonts-dejavu-extra libatk-wrapper-java libatk-wrapper-java-jni libgif7
libice-dev libpthread-stubs0-dev libsm-dev libx11-dev libx11-doc libxau-dev
libxcb1-dev libxdmcp-dev libxt-dev x11proto-core-dev x11proto-dev
xorg-sgml-doctools xtrans-dev
これを削除するには sudo apt autoremoveを利用してください。
#~~~~~~~~~~~~
.py", line 7, in
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
Makefile:1126: recipe for target 'install' failed
make: *** [install] Error 1

とりあえずautoremoveしましょう。

sudo apt autoremove

そして、

from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

No module named
そんなモジュールはねーよと言ってるのでしょうか。

解決方法としては
ググった結果
libffi-devを入れると解決できるようです

sudo apt install libffi-dev

ちなみにlibffi-devが何かと言うと

libffiは、外部関数インターフェースのうち、マシンに依存する最も低いレイヤを提供するライブラリーです。2つの言語間で渡される値の型変換処理を行うレイヤが、libffiの上になければなりません。ffiとは外部関数インターフェース(Foreign Function Interface)の略であり、外部関数インターフェースとは、ある言語で書かれたコードを別の言語で書かれたコードで呼び出すインターフェースとしてよく使われる名前です。

良く分かりませんでした。

https://sourceware.org/libffi/
こちらを引用すると
Libffiは、インタプリタプログラムからコンパイルされたコードへの橋渡しを提供するためにそのようなプログラムで使用することができます。

んー、別言語間の受け渡しをする為のもの?なのかな?

とりあえず使うんだね。という感じでインストール
3度目のインストールで今度はちゃんと入った様です。

バージョン確認

pyenv versions
* system (set by /home/user/.pyenv/version)
3.8-dev
#バージョンを有効化
pyenv global 3.8-dev
python --version
Python 3.8.0a0

ここまでがpython3.8を入れたときのログ。


今回はanaconda導入までです。
次はselemiumをインストールするところから進めていく予定です。

hoge