見出し画像

ラズパイ上で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:~$ 

完成です。

この記事が気に入ったらサポートをしてみませんか?