schedule2018-07-28

ラズパイのセットアップからpyenvを使ってPython3.6環境を構築するまで

この記事の目的

この記事では、RaspberryPiのセットアップからpyenvを使ってPython3.6のインストールまでを構築していきます。

大まかな手順は以下の通り。

  1. OSをダウンロード
  2. Etcherを使ってOSをSDに書き込む
  3. Wi-Fiの設定とssh接続
  4. pyenvをインストール
  5. Python3.6をインストール

対象

  • ラズパイにPython環境を整えたい方。
  • pyenvを使ってバージョン管理したい方。
  • SSHで操作したい方。

コマンドラインで操作していくため、少し難しめです。。。

ラズパイを初めてさわる方は、こちらの入門を順番に読んで行くとわかりやすいと思います。

環境

Model Raspberry Pi 3B
OS RASPBIAN STRETCH LITE 4.14
microSD TOSHIBA 16GB
PC Mac(Windowsでも変わらずできると思います。)

1. OSをダウンロード

Raspberry PiのOSは、無料で配布されています。 OSであるRASPBIANのダウンロードはこちら

os

私はコマンドラインから利用するため、軽量版のRASPBIAN STRETCH LITEを選びました。 Download ZIPからダウンロードします。 LITEはCUIです。 デスクトップ版が欲しい場合は、Raspbian Stretch with desktop and recommended softwareを選んだほうが良さそうですね。

2. Etcherを使ってOSをSDに書き込む

公式のインストールガイドでもオススメしている、Etcherを使ってOSをSDカードに書き込みます。

Etcher

EtcherはOSのイメージ(zipでも可)と、SDカードを選ぶだけで書き込みができてしまう、便利なソフトです。 OSはRASPBIAN以外にも対応しており、debianなども書き込めます。

etcher_screenshot.gif

先ほどダウンロードした、zipファイルとSDカードを選んで書き込みましょう。

3. Wi-Fiの設定とssh接続

OSを書き込んだ後、wpa_supplicant.confsshを置くと勝手にWi-Fiとsshの設定をしてくれます。

wpa_supplicant.conf

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="***your_wifi_ssid***"
        psk="****your_wifi_psk****"
}

sshは空のファイルを作成して下さい。拡張子もなしです。

wpa_and_ssh.png

ラズパイにmicroSDを挿して起動しましょう。 まずは、モニタとキーボードを繋げて確認します。

デフォルトはpi / raspberryで認証できます。

raspberrypi login: pi
Password : raspberry

wifiが繋がっているかは、pingで確認します。

$ ping www.google.com
PING www.google.com (172.217.27.68) 56(84) bytes of data.
64 bytes from nrt12s15-in-f4.1e100.net (172.217.27.68): icmp_seq=1 ttl=55 time=17.4 ms
64 bytes from nrt12s15-in-f4.1e100.net (172.217.27.68): icmp_seq=2 ttl=55 time=21.2 ms
64 bytes from nrt12s15-in-f4.1e100.net (172.217.27.68): icmp_seq=3 ttl=55 time=21.2 ms
64 bytes from nrt12s15-in-f4.1e100.net (172.217.27.68): icmp_seq=4 ttl=55 time=20.9 ms
^C
--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 17.474/20.234/21.299/1.600 ms

大丈夫そうですね。

続いて、ssh接続のためラズパイのIPアドレスを調べます。

$ ifconfig

省略

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.55  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::760d:29b1:adc0:e86a  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:f4:ed:6f  txqueuelen 1000  (Ethernet)
        RX packets 159  bytes 15256 (14.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 133  bytes 21859 (21.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

IPアドレスは、wlan0inetの部分です。192.168.1.55となっていました。

早速接続しましょう。

$ ssh pi@192.168.1.55

pi@192.168.1.55's password: # パスワードを聞かれるのでraspberryと入力
省略
pi@raspberrypi:~ $ 

OK!

以降はターミナルから操作します。

IPアドレスの固定化をする場合はこちら

4. pyenvをインストール

こちらを参考に導入していきます。

# 事前に必要なものをインストール
$ sudo apt-get install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

# pyenvのソースをクローン
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv

.bash_profileファイルに設定を追加、反映。

$ sudo vi ~/.bash_profile
# 以下の内容を追記
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

$ source ~/.bash_profile

pyenvで利用できるバージョンの確認

$ pyenv install --list

3.6.6がありました。これをインストールしていきます。

5. Python3.6をインストール

pyenvを使ってPython3.6.6をインストールします。

$ pyenv install 3.6.6
$ pyenv global 3.6.6

# バージョン確認
$ python -V
Python 3.6.6
$ pip -V
pip 10.0.1 from /home/pi/.pyenv/versions/3.6.6/lib/python3.6/site-packages/pip (python 3.6)

インストール時間は長いです。気長に待ちましょう。 globalは全てのシェルでそのバージョンを利用できるようにします。 pipも最新のものが入っていました。

テストしてみましょう。

$ cd ~
$ nano test.py

nanoはラズビアンに載っているテキストエディタです。
viもあるので、慣れている方はそちらで書いてください。

print('hello world')

nanoで終了する場合はCtl + X -> y -> Enterで保存します。保存しない場合はCtl + X -> n -> Enterで破棄できます。

書いたら、実行してみます。

# 実行
$ python test.py
hello world

以上となります。

Python3.7.0

Python3.7.0をインストールしたが、失敗しました。

$ pyenv install 3.7.0
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...

BUILD FAILED (Raspbian 9.4 using python-build 1.2.6)

Inspect or clean up the working tree at /tmp/python-build.20180724014943.17560
Results logged to /tmp/python-build.20180724014943.17560.log

Last 10 log lines:
  File "/tmp/tmp_7o9buot/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmp_7o9buot/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmp_7o9buot/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmp_7o9buot/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/download.py", line 39, in <module>
  File "/tmp/tmp_7o9buot/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in <module>
  File "/tmp/python-build.20180724014943.17560/Python-3.7.0/Lib/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
Makefile:1122: recipe for target 'install' failed
make: *** [install] Error 1

stack overflow に解決方法が載っておりこちらを試したらできるかと思います。(まだ試していません)

おわりに

ラズパイとPython環境のセットアップができたでしょうか?

良きラズパイライフを楽しんで下さい!

参考


Raspberry Piで遊ぼう!

ラズパイを始めて見たい方は、下記の商品がおすすめです。

  • Raspberry Pi3 Model B 本体
  • 電源アダプター
  • 専用ケース
  • スイッチ付きケーブル
  • ヒートシンク

とmicroSDカード以外に、必要なものは全て同梱されています。 (勢い余って)3台購入しましたが、全て問題ありませんでした。

良い点は、maicroSDが選べることです。

必要な容量はOS+ライブラリで約3GBです。8GB以上あれば大丈夫だと思います。

こちらも動作に問題はありません。