この記事の目的
この記事では、RaspberryPiのセットアップからpyenv
を使ってPython3.6のインストールまでを構築していきます。
大まかな手順は以下の通り。
- OSをダウンロード
- Etcherを使ってOSをSDに書き込む
- Wi-Fiの設定とssh接続
- pyenvをインストール
- 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のダウンロードはこちら。
私はコマンドラインから利用するため、軽量版のRASPBIAN STRETCH LITE
を選びました。
Download ZIP
からダウンロードします。
LITEはCUIです。
デスクトップ版が欲しい場合は、Raspbian Stretch with desktop and recommended software
を選んだほうが良さそうですね。
2. Etcherを使ってOSをSDに書き込む
公式のインストールガイドでもオススメしている、Etcherを使ってOSをSDカードに書き込みます。
EtcherはOSのイメージ(zipでも可)と、SDカードを選ぶだけで書き込みができてしまう、便利なソフトです。 OSはRASPBIAN以外にも対応しており、debianなども書き込めます。
先ほどダウンロードした、zipファイルとSDカードを選んで書き込みましょう。
3. Wi-Fiの設定とssh接続
OSを書き込んだ後、wpa_supplicant.conf
とssh
を置くと勝手に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は空のファイルを作成して下さい。拡張子もなしです。
ラズパイに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アドレスは、wlan0
のinet
の部分です。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環境のセットアップができたでしょうか?
良きラズパイライフを楽しんで下さい!
参考
- INSTALLING OPERATING SYSTEM IMAGES
- Raspberry Pi 3 (Raspbian Jessie)の無線LANに固定IPアドレスを設定する
- pyenv/COMMANDS.md
- 【Python】cronでpyenv環境のPythonが実行されない時の対処法
- SSH接続で WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! って言われて接続を拒否られるとき
- RaspberryPiにpyenvを導入
Raspberry Piで遊ぼう!
ラズパイを始めて見たい方は、下記の商品がおすすめです。
- Raspberry Pi3 Model B 本体
- 電源アダプター
- 専用ケース
- スイッチ付きケーブル
- ヒートシンク
とmicroSDカード以外に、必要なものは全て同梱されています。 (勢い余って)3台購入しましたが、全て問題ありませんでした。
良い点は、maicroSDが選べることです。
必要な容量はOS+ライブラリで約3GBです。8GB以上あれば大丈夫だと思います。
こちらも動作に問題はありません。