22
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry PiにpyenvをインストールしてPythonをバージョン管理

Last updated at Posted at 2020-02-13

ラズパイには標準で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
.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

今日はここまでです!

#参考

22
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?