Raspberry Pi 5 (bookworm 64bit) におけるPython環境の構築

はじめに

Ubuntuではpyenv環境で慣れているので、Raspberry Pi OSにおいてもpyenvでPython環境を整えたい。

そもそもpyenvとは、Pythonのバージョンを管理するツールで複数のバージョンのPythonを使い分けることを可能にしてくれます。たとえば、Globalにあるバージョンを指定し、あるフォルダ(開発プロジェクト毎など)をlocalとしてglobalと異なるバージョンのPythonを指定することで、開発プロジェクト毎に異なるバージョンの環境を提供可能です。

Pyenvのインストール

インストールはこれだけ、

19:42 rpi@raspberrypi5b-alpha:~
$git clone https://github.com/pyenv/pyenv.git ~/.pyenv
Cloning into '/home/rpi/.pyenv'...
remote: Enumerating objects: 23766, done.
remote: Counting objects: 100% (2277/2277), done.
remote: Compressing objects: 100% (337/337), done.
remote: Total 23766 (delta 2013), reused 2102 (delta 1907), pack-reused 21489
Receiving objects: 100% (23766/23766), 4.75 MiB | 1.92 MiB/s, done.
Resolving deltas: 100% (16127/16127), done.

環境変数を設定します。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc

環境変数を反映させ、インストールされたpyenvのバージョンを確認、インストールできるPythonのバージョンを確認。

19:54 rpi@raspberrypi5b-alpha:~
$source .bashrc
19:54 rpi@raspberrypi5b-alpha:~
$pyenv --version
pyenv 2.3.35-7-g6e3b91a8
19:54 rpi@raspberrypi5b-alpha:~
$pyenv install -list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1

Pythonのインストール、失敗

足りないもの多数、ビルドできず

19:54 rpi@raspberrypi5b-alpha:~
$pyenv install 3.12.1
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_ADDRESS = "ja_JP.UTF-8",
	LC_NAME = "ja_JP.UTF-8",
	LC_MONETARY = "ja_JP.UTF-8",
	LC_PAPER = "ja_JP.UTF-8",
	LC_IDENTIFICATION = "ja_JP.UTF-8",
	LC_TELEPHONE = "ja_JP.UTF-8",
	LC_MEASUREMENT = "ja_JP.UTF-8",
	LC_TIME = "ja_JP.UTF-8",
	LC_NUMERIC = "ja_JP.UTF-8",
	LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
Downloading Python-3.12.1.tar.xz...
-> https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz
Installing Python-3.12.1...
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/rpi/.pyenv/versions/3.12.1/lib/python3.12/bz2.py", line 17, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/rpi/.pyenv/versions/3.12.1/lib/python3.12/curses/__init__.py", line 13, in <module>
    from _curses import *
ModuleNotFoundError: No module named '_curses'
WARNING: The Python curses extension was not compiled. Missing the ncurses lib?
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/rpi/.pyenv/versions/3.12.1/lib/python3.12/ctypes/__init__.py", line 8, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
WARNING: The Python ctypes extension was not compiled. Missing the libffi lib?
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'readline'
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/rpi/.pyenv/versions/3.12.1/lib/python3.12/ssl.py", line 100, in <module>
    import _ssl             # if we can't import it, let the error propagate
    ^^^^^^^^^^^
ModuleNotFoundError: No module named '_ssl'
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
BUILD FAILED (Debian 12 using python-build 2.3.35-7-g6e3b91a8)

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

Last 10 log lines:
	esac; \
	LD_LIBRARY_PATH=/tmp/python-build.20240110195522.6283/Python-3.12.1 ./python -E -m ensurepip \
		$ensurepip --root=/ ; \
fi
Looking in links: /tmp/tmp8erb0wpc
Processing /tmp/tmp8erb0wpc/pip-23.2.1-py3-none-any.whl
Installing collected packages: pip
  WARNING: The scripts pip3 and pip3.12 are installed in '/home/rpi/.pyenv/versions/3.12.1/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-23.2.1

ライブラリのインストール

足りないライブラリや使うであろうtk-devをインストール。opencv関連は後でインストール。

sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

再度Pythonをインストール

再度Python3.12.1をインストール。できた。

20:22 rpi@raspberrypi5b-alpha:~
$pyenv install 3.12.1
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_ADDRESS = "ja_JP.UTF-8",
	LC_NAME = "ja_JP.UTF-8",
	LC_MONETARY = "ja_JP.UTF-8",
	LC_PAPER = "ja_JP.UTF-8",
	LC_IDENTIFICATION = "ja_JP.UTF-8",
	LC_TELEPHONE = "ja_JP.UTF-8",
	LC_MEASUREMENT = "ja_JP.UTF-8",
	LC_TIME = "ja_JP.UTF-8",
	LC_NUMERIC = "ja_JP.UTF-8",
	LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
Downloading Python-3.12.1.tar.xz...
-> https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz
Installing Python-3.12.1...
Installed Python-3.12.1 to /home/rpi/.pyenv/versions/3.12.1
20:25 rpi@raspberrypi5b-alpha:~
$pyenv versions
* system (set by /home/rpi/.pyenv/version)
  3.12.1

正常にインストールされたか確認、設定

localを設定して、versionsで確認。whichでも確認してみた。

20:29 rpi@raspberrypi5b-alpha:~
$pyenv local 3.12.1
20:30 rpi@raspberrypi5b-alpha:~
$pyenv local
3.12.1
20:30 rpi@raspberrypi5b-alpha:~
$pyenv versions
  system
* 3.12.1 (set by /home/rpi/.python-version)
20:30 rpi@raspberrypi5b-alpha:~
$which python
/home/rpi/.pyenv/shims/python
20:35 rpi@raspberrypi5b-alpha:~

モジュールのインストール

前回出来なかった。pymysqlをインストール。ついでにpipの新しいバージョンがあると[お知らせ]がついていたので、pipもアップグレードした。

20:35 rpi@raspberrypi5b-alpha:~
$python -m pip install pymysql
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pymysql
  Downloading https://www.piwheels.org/simple/pymysql/PyMySQL-1.1.0-py3-none-any.whl (44 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 44.8/44.8 kB 130.9 kB/s eta 0:00:00
Installing collected packages: pymysql
Successfully installed pymysql-1.1.0

[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: pip install --upgrade pip
20:37 rpi@raspberrypi5b-alpha:~
$python -m pip install --upgrade pip
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in ./.pyenv/versions/3.12.1/lib/python3.12/site-packages (23.2.1)
Collecting pip
  Downloading https://www.piwheels.org/simple/pip/pip-23.3.2-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 1.1 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.2.1
    Uninstalling pip-23.2.1:
      Successfully uninstalled pip-23.2.1
Successfully installed pip-23.3.2

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA