ラズパイには標準で3.5.3
のPythonがインストールされていますが、
3.6
以上のPythonを使いたかったので、pyenvを使用してバージョンを切り替えられるようにしておきます。
環境
- Raspberry Pi 3 Model B+
- Raspbian 9.11(stretch)
- Kernel 4.19.66-v7+
$ uname -a
# Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
$ lsb_release -a
# No LSB modules are available.
# Distributor ID: Raspbian
# Description: Raspbian GNU/Linux 9.11 (stretch)
# Release: 9.11
# Codename: stretch
pyenvのインストール
まず、必要なパッケージのインストールをします。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
githubからpyenvをクローンしてきます。
$ git clone https://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 -)"
.bash_profile
を再読み込みします。
$ source ~/.bash_profile
下記コマンドでバージョンが表示されればインストール完了です。
$ pyenv --version
#pyenv 1.2.16-5-g7097f820
pyenvでバージョン変更
インストールできるバージョンの一覧を表示してみます。
$ pyenv install --list
#Available versions:
# 2.1.3
# 2.2.3
# ...
# 3.6.0
# 3.6-dev
# ...
# stackless-3.4.7
# stackless-3.5.4
今回は3.6.0
をインストールしてみます。
$ pyenv install 3.6.0
インストールが完了したら実際にバージョンを変更させてみましょう。
まず変更前のバージョンを確認します。
$ python --version
#Python 2.7.13
$ python3 --version
#Python 3.5.3
バージョンを変更します。
$ pyenv global 3.6.0
下記ようにバージョンが変更されました!
$ python --version
#Python 3.6.0
$ python3 --version
#Python 3.6.0
pyenvの設定について
pyenvは下記のコマンドで設定します。
$ pyenv global x.x.x
ちなみにこのglobal
の部分を変更することで、適用範囲を設定できます。
適用範囲 | 使用用途 | |
---|---|---|
shell | 今使用しているシェルにのみ適用 | 一時的な使用 |
local | カレントディレクトリに適用 | フォルダごとに設定したい |
global | 全体に適用 | 全体のデフォルト環境を変更したい |
x.x.x
の部分をsystem
とすることで元に戻せます。
$ pyenv local 3.6.4
$ pyenv shell 2.7.6
$ pyenv global system
下記のコマンドでインストールしているバージョン一覧を見ることもできます。
$ pyenv versions
おまけ
3.7系をインストールしようとしたら下記エラーでインストールできませんでした。
$ 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.11 using python-build 1.2.16-5-g7097f820)
Inspect or clean up the working tree at /tmp/python-build.20200213174102.2652
Results logged to /tmp/python-build.20200213174102.2652.log
Last 10 log lines:
File "/tmp/tmp01sfxi5t/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/__init__.py", line 42, in <module>
File "/tmp/tmp01sfxi5t/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/cmdoptions.py", line 16, in <module>
File "/tmp/tmp01sfxi5t/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/index.py", line 25, in <module>
File "/tmp/tmp01sfxi5t/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/download.py", line 39, in <module>
File "/tmp/tmp01sfxi5t/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in <module>
File "/tmp/python-build.20200213174102.2652/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
libffi-dev
をインストールすることで3.7系もインストールできました。
$ sudo apt install libffi-dev
$ pyenv install 3.7.0
今日はここまでです!
#参考