ラズパイ上でPythonの開発環境を整える
Tensorflowを使うにはPythonが必要→Pythonの環境を管理するには管理ツールが必要ということで今日のお品書き。
pyenvの導入
githubのpyenvについてのドキュメントです。
曰く「pyenvはPythonの色々入ってるバージョンを簡単に切り替えられるっす」
ということで、Pythonバージョン管理ツールですね。
pi@raspberrypi:~ $ pyenv -v
-bash: pyenv: コマンドが見つかりません
pi@raspberrypi:~ $
当然、素の状態ではpyenvは入っていないのでバージョン確認("-v")を投げても答えてくれません。
インストールにはまず必要なパッケージのインストール。
pi@raspberrypi:~ $ sudo apt-get install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
次にgithubからpyenvをクローン(コピー)します。
pi@raspberrypi:~ $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
終わったら.bash_profileに以下を追記します。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
終わったらリブート("source ~/.bash_profile"でもいいそうです)して、バージョン確認します。
pi@raspberrypi:~$ pyenv -v
pyenv 1.2.8-5-gec9fb549
pi@raspberrypi:~$
Python3.7.1のインストール
ではpyenvを使ってPythonをインストールしますが、まずはどのバージョンがインストールできるか確認します。
pi@raspberrypi:~$ pyenv install --list
Available versions:
・
・
・
3.6.1
3.6.2
3.6.3
3.6.4
3.6.5
3.6.6
3.6.7
3.7.0
3.7-dev
3.7.1
3.8-dev
・
・
・
pi@raspberrypi:~$
思い切って3.7.1を入れます。
pi@raspberrypi:~$ pyenv install 3.7.1
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
BUILD FAILED (Raspbian 9.6 using python-build 1.2.8-5-gec9fb549)
・
・
・
Makefile:1122: ターゲット 'install' のレシピで失敗しました
make: *** [install] エラー 1
pi@raspberrypi:~$
あれ?上手くいかない。
pyenvでのインストールに失敗
調べたところQiitaさんところにこんな記事が、、
Debian9(Raspbianの元)で使ってるopensslのバージョンの問題らしい。
解決策も提示されているので実行します。
pi@raspberrypi:~$ CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib pyenv install -v 3.7.1
/tmp/python-build.20181127115848.13249 ~
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
/tmp/python-build.20181127115848.13249/Python-3.7.1 /tmp/python-build.20181127115848.13249 ~
Installing Python-3.7.1...
checking build system type... armv7l-unknown-linux-gnueabihf
checking host system type... armv7l-unknown-linux-gnueabihf
checking for python3.7... no
・
・
・
BUILD FAILED (Raspbian 9.6 using python-build 1.2.8-5-gec9fb549)
・
・
・
どうやらうまく行ったと思ったらダメみたいです。
試しに少し古い3.6.5をインストールしてみると
pi@raspberrypi:~$ CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib pyenv install -v 3.6.5
・
・
・
Installed Python-3.6.5 to /home/pi/.pyenv/versions/3.6.5
pi@raspberrypi:~$ pyenv versions
* system (set by /home/pi/.pyenv/version)
3.6.5
pi@raspberrypi:~$
うまくいきました。
どうやら3.7系の問題のようだと思ったらまたまたQiitaさんのところに記事がありました。
言われるがままに対策を講じます。
pi@raspberrypi:~$ sudo apt install libffi-dev
ではもう一度、3.7.1をインストールします。
pi@raspberrypi:~$ CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib pyenv install -v 3.7.1
・
・
・
Installed Python-3.7.1 to /home/pi/.pyenv/versions/3.7.1
pi@raspberrypi:~$ pyenv versions
* system (set by /home/pi/.pyenv/version)
3.6.5
3.7.1
pi@raspberrypi:~$
できました。
パスの設定とバージョンの確認
ここでシステムが使っているPythonのバージョンを確認します。
pi@raspberrypi:~$ python -V
Python 2.7.13
なので、システムが3.7.1を使うように設定します。
まず、3.7.1へパスを通すため.bash_profileへ以下を追記します。
export PATH=$HOME/.pyenv/shims:$PATHpyenv global
そして再読み込み。
pi@raspberrypi:~$ source .bash_profile
そして切り替えと確認。
pi@raspberrypi:~$ pyenv global 3.7.1
pi@raspberrypi:~$ pyenv versions
system
3.6.5
* 3.7.1 (set by /home/pi/.pyenv/version)
pi@raspberrypi:~$ python -V
Python 3.7.1
pi@raspberrypi:~$
完成です。