ラズパイゼロにpyenvでpythonの環境構築する話
どこのご家庭にも一個や二個は余っている(?)ラズパイが自宅にもあったので、とりあえずPythonの環境を作るかってことでpyenvを使って環境構築をした時の話です。
環境
ラズパイ : Raspberry Pi Zero WH
OS : raspbian 9.4
事前準備
pyenv
のインストールの前にPythonのコンパイル時に必要になるもパッケージをインストールしておきます。
sudo apt install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libffi-dev gcc make
これを忘れてもpyenvのインストールは出来るのですが、Pythonのインストール時に悲しい出来事が起こります。(詳細は記事後半に書いてあります。)
pyenvのインストール
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
echo 'export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'fi' >> ~/.bashrc
source ~/.bashrc
git clone
は説明しなくてもわかると思いますがpyenv
を手元に持ってきています。echo ~~
でpyenv
の設定を.bashrc
に追記しています。source ~/.bashrc
でbashを読み込み直しています。
pyenv --version
を実行して
pyenv 1.2.9-16-g9baa6efe
pyenv
のバージョンが表示されればOK
pythonのインストール
そもそもraspbianにはPythonが入っているわけですが、ちょっとバージョンが古かったのでどうせなら新しいPythonを使おうってことでこんなことをやっています。
pyenv install --list
これでインストール可能なPythonのバージョンが取得できるので、お好きなものを選んでください。
今回は実行時点て最新だった3.7.2
をインストールします。
pyenv install 3.7.2
コンパイルに一時間近くかかるので気長に待ちましょう。
sshで接続している場合は、途中で接続が切れるとインストールが中断されてしまうのでnohup
を使っておきましょう。
nohup pyenv install 3.7.2 &
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...
Installed Python-3.7.2 to /home/pi/.pyenv/versions/3.7.2
こんな感じでインストールされます。
インストールが完了したら早速Python3.7.2が実行できるようにしましょう。
全体で使うPythonのバージョンを3.7.2
に変更
pyenv global 3.7.2
変更されたか確認してみます。
python --version
Python 3.7.2
指定したバージョンが表示されれば大丈夫です。
元に戻すには
pyenv global system
でOK
最後に
実は筆者は今回pyenv
でPythonをインストールするときに失敗を犯しまして、具体的には、Pythonのコンパイル時に必要なパッケージをインストールする前にpyenv install ~~
コマンドを実行したのです。
すると以下のようなエラーが出てコンパイルが失敗しました。
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
BUILD FAILED (Raspbian 9.4 using python-build 1.2.9-16-g9baa6efe)
Inspect or clean up the working tree at /tmp/python-build.20190225171731.2526
Results logged to /tmp/python-build.20190225171731.2526.log
Last 10 log lines:
install|*) ensurepip="" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Looking in links: /tmp/tmp0bt1vlf_
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2
一時間くらいコンパイルしていたのが水の泡…
皆さんにはこんな悲しい思いをして欲しくないので、記事で紹介してある内容は、成功した時の内容です。
悲しい出来事はありましたが、無事ラズパイ上でpyenvを利用したPythonの環境構築ができました。
参考記事
https://qiita.com/utgwkk/items/bf282ca95f64ef7dd594 https://qiita.com/rysk92/items/878fddbf23262628d89e