連休なのでちょっと寄り道して、今使っている Raspberry Pi に、最新の Python3 をインストールしてみました。
使っている OS は、
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
$
です。
https://www.python.org/
から、最新の Python を調べると、現時点では、 3.12.4 でした。
早速、インストールしてみました。終わったら、 /usr/local/python の下にインストールすることにします。
$ cd
$ wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
$ tar xvf Python-3.12.4.tgz
$ cd Python-3.12.4
$ ./configure --prefix=/usr/local/python --enable-optimizations
$ make
(このマシンですと50分から1時間ぐらいかかりました。
以下、途中で気になった make 時の出力を示します。 .... は途中省略を表します。
例によって、空白文字が正しく表示されていません。)
......
The following modules are *disabled* in configure script:
_sqlite3
The necessary bits to build these optional modules were not found:
_bz2 _ctypes _ctypes_test
_curses _curses_panel _dbm
_gdbm _hashlib _lzma
_ssl _tkinter _uuid
readline
To find the necessary bits, look in configure.ac and config.log.
Could not build the ssl module!
Python requires a OpenSSL 1.1.1 or newer
(これらのソフトは、必要に応じてあらかじめインストールしておいた方がよいようです。
特に OpenSSL 1.1.1 以上が必要みたいですが、
Python3 で SSL は、どのように使うのか興味深いですね。)
.......
# Next, run the profile task to generate the profile information.
./python -m test --pgo --timeout=1200 || true
Using random seed: 1449334811
0:00:00 load avg: 1.00 Run 44 tests sequentially (timeout: 20 min)
0:00:00 load avg: 1.00 [ 1/44] test_array
0:00:08 load avg: 1.00 [ 2/44] test_base64
0:00:11 load avg: 1.00 [ 3/44] test_binascii
0:00:11 load avg: 1.00 [ 4/44] test_binop
0:00:12 load avg: 1.00 [ 5/44] test_bisect
0:00:13 load avg: 1.00 [ 6/44] test_bytes
0:00:50 load avg: 1.00 [ 7/44] test_bz2 -- test_bytes passed in 37.6 sec
0:00:51 load avg: 1.00 [ 8/44] test_cmath -- test_bz2 skipped
0:00:52 load avg: 1.00 [ 9/44] test_codecs
0:01:02 load avg: 1.00 [10/44] test_collections
0:01:10 load avg: 1.00 [11/44] test_complex
0:01:12 load avg: 1.00 [12/44] test_dataclasses
0:01:16 load avg: 1.00 [13/44] test_datetime
0:01:40 load avg: 0.94 [14/44] test_decimal
0:02:44 load avg: 0.98 [15/44] test_difflib -- test_decimal passed in 1 min 3 sec
0:02:52 load avg: 0.98 [16/44] test_embed
0:03:38 load avg: 0.99 [17/44] test_float -- test_embed passed in 45.5 sec
0:03:40 load avg: 0.99 [18/44] test_fstring
0:04:01 load avg: 1.00 [19/44] test_functools
0:04:06 load avg: 1.00 [20/44] test_generators
0:04:09 load avg: 1.00 [21/44] test_hashlib
0:04:12 load avg: 1.00 [22/44] test_heapq
0:04:18 load avg: 1.00 [23/44] test_int
0:04:21 load avg: 1.00 [24/44] test_itertools
0:05:04 load avg: 1.00 [25/44] test_json -- test_itertools passed in 42.2 sec
0:09:35 load avg: 1.00 [26/44] test_long -- test_json passed in 4 min 31 sec
0:10:16 load avg: 1.00 [27/44] test_lzma -- test_long passed in 41.5 sec
0:10:17 load avg: 1.00 [28/44] test_math -- test_lzma skipped
0:10:44 load avg: 1.00 [29/44] test_memoryview
0:10:48 load avg: 1.00 [30/44] test_operator
0:10:49 load avg: 1.00 [31/44] test_ordered_dict
0:10:58 load avg: 1.00 [32/44] test_patma
0:10:59 load avg: 1.00 [33/44] test_pickle
0:11:56 load avg: 1.00 [34/44] test_pprint -- test_pickle passed in 56.6 sec
0:11:58 load avg: 1.00 [35/44] test_re
0:12:05 load avg: 1.00 [36/44] test_set
0:12:46 load avg: 1.00 [37/44] test_sqlite3 -- test_set passed in 40.7 sec
0:12:47 load avg: 1.00 [38/44] test_statistics -- test_sqlite3 skipped
0:13:05 load avg: 1.00 [39/44] test_struct
0:13:11 load avg: 1.00 [40/44] test_tabnanny
0:13:14 load avg: 1.00 [41/44] test_time
0:13:17 load avg: 0.92 [42/44] test_unicode
0:13:37 load avg: 0.94 [43/44] test_xml_etree
0:13:41 load avg: 0.95 [44/44] test_xml_etree_c
Total duration: 13 min 49 sec
Total tests: run=8,314 skipped=175
Total test files: run=44/44 skipped=3
Result: SUCCESS
( Python3 は、make 時にテストをするみたいです。
make check とかしたいところですが、時間がかかりそうなのでこれで良しとします。)
$
make できたので、さっそくインストールします。
$ su
# mkdir /usr/local/python
# make install
# exit
インストールできたか確認してみます。
$ ls /usr/local/python
bin include lib share
$
$ ls /usr/local/python/bin
2to3 idle3 pip3 pydoc3 python3 python3.12
2to3-3.12 idle3.12 pip3.12 pydoc3.12 python3-config python3.12-config
$
$ ls /usr/local/python/lib
libpython3.12.a pkgconfig python3.12
$
OpenSSL とか使えないので、今回インストールした Python3 は標準では使えないようにしているので、
環境変数 PATH と LD_LIBRARY_PATH を再設定します。
$ export PATH=/usr/local/python/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/python/lib
実行してみます。
$ python3
Python 3.12.4 (main, Jul 13 2024, 23:01:23) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
ちゃんと、3.12.4 になっています。
Raspberry Pi でも最新の Python3 が一応使えるので、Raspberry Pi の有効性があらためて確認できました。
追記:使用した Raspberry Pi はちょっと古い、
$ cat /proc/cpuinfo
.............
Model : Raspberry Pi 4 Model B Rev 1.2
$
です。
使っている OS は、
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
$
です。
https://www.python.org/
から、最新の Python を調べると、現時点では、 3.12.4 でした。
早速、インストールしてみました。終わったら、 /usr/local/python の下にインストールすることにします。
$ cd
$ wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
$ tar xvf Python-3.12.4.tgz
$ cd Python-3.12.4
$ ./configure --prefix=/usr/local/python --enable-optimizations
$ make
(このマシンですと50分から1時間ぐらいかかりました。
以下、途中で気になった make 時の出力を示します。 .... は途中省略を表します。
例によって、空白文字が正しく表示されていません。)
......
The following modules are *disabled* in configure script:
_sqlite3
The necessary bits to build these optional modules were not found:
_bz2 _ctypes _ctypes_test
_curses _curses_panel _dbm
_gdbm _hashlib _lzma
_ssl _tkinter _uuid
readline
To find the necessary bits, look in configure.ac and config.log.
Could not build the ssl module!
Python requires a OpenSSL 1.1.1 or newer
(これらのソフトは、必要に応じてあらかじめインストールしておいた方がよいようです。
特に OpenSSL 1.1.1 以上が必要みたいですが、
Python3 で SSL は、どのように使うのか興味深いですね。)
.......
# Next, run the profile task to generate the profile information.
./python -m test --pgo --timeout=1200 || true
Using random seed: 1449334811
0:00:00 load avg: 1.00 Run 44 tests sequentially (timeout: 20 min)
0:00:00 load avg: 1.00 [ 1/44] test_array
0:00:08 load avg: 1.00 [ 2/44] test_base64
0:00:11 load avg: 1.00 [ 3/44] test_binascii
0:00:11 load avg: 1.00 [ 4/44] test_binop
0:00:12 load avg: 1.00 [ 5/44] test_bisect
0:00:13 load avg: 1.00 [ 6/44] test_bytes
0:00:50 load avg: 1.00 [ 7/44] test_bz2 -- test_bytes passed in 37.6 sec
0:00:51 load avg: 1.00 [ 8/44] test_cmath -- test_bz2 skipped
0:00:52 load avg: 1.00 [ 9/44] test_codecs
0:01:02 load avg: 1.00 [10/44] test_collections
0:01:10 load avg: 1.00 [11/44] test_complex
0:01:12 load avg: 1.00 [12/44] test_dataclasses
0:01:16 load avg: 1.00 [13/44] test_datetime
0:01:40 load avg: 0.94 [14/44] test_decimal
0:02:44 load avg: 0.98 [15/44] test_difflib -- test_decimal passed in 1 min 3 sec
0:02:52 load avg: 0.98 [16/44] test_embed
0:03:38 load avg: 0.99 [17/44] test_float -- test_embed passed in 45.5 sec
0:03:40 load avg: 0.99 [18/44] test_fstring
0:04:01 load avg: 1.00 [19/44] test_functools
0:04:06 load avg: 1.00 [20/44] test_generators
0:04:09 load avg: 1.00 [21/44] test_hashlib
0:04:12 load avg: 1.00 [22/44] test_heapq
0:04:18 load avg: 1.00 [23/44] test_int
0:04:21 load avg: 1.00 [24/44] test_itertools
0:05:04 load avg: 1.00 [25/44] test_json -- test_itertools passed in 42.2 sec
0:09:35 load avg: 1.00 [26/44] test_long -- test_json passed in 4 min 31 sec
0:10:16 load avg: 1.00 [27/44] test_lzma -- test_long passed in 41.5 sec
0:10:17 load avg: 1.00 [28/44] test_math -- test_lzma skipped
0:10:44 load avg: 1.00 [29/44] test_memoryview
0:10:48 load avg: 1.00 [30/44] test_operator
0:10:49 load avg: 1.00 [31/44] test_ordered_dict
0:10:58 load avg: 1.00 [32/44] test_patma
0:10:59 load avg: 1.00 [33/44] test_pickle
0:11:56 load avg: 1.00 [34/44] test_pprint -- test_pickle passed in 56.6 sec
0:11:58 load avg: 1.00 [35/44] test_re
0:12:05 load avg: 1.00 [36/44] test_set
0:12:46 load avg: 1.00 [37/44] test_sqlite3 -- test_set passed in 40.7 sec
0:12:47 load avg: 1.00 [38/44] test_statistics -- test_sqlite3 skipped
0:13:05 load avg: 1.00 [39/44] test_struct
0:13:11 load avg: 1.00 [40/44] test_tabnanny
0:13:14 load avg: 1.00 [41/44] test_time
0:13:17 load avg: 0.92 [42/44] test_unicode
0:13:37 load avg: 0.94 [43/44] test_xml_etree
0:13:41 load avg: 0.95 [44/44] test_xml_etree_c
Total duration: 13 min 49 sec
Total tests: run=8,314 skipped=175
Total test files: run=44/44 skipped=3
Result: SUCCESS
( Python3 は、make 時にテストをするみたいです。
make check とかしたいところですが、時間がかかりそうなのでこれで良しとします。)
$
make できたので、さっそくインストールします。
$ su
# mkdir /usr/local/python
# make install
# exit
インストールできたか確認してみます。
$ ls /usr/local/python
bin include lib share
$
$ ls /usr/local/python/bin
2to3 idle3 pip3 pydoc3 python3 python3.12
2to3-3.12 idle3.12 pip3.12 pydoc3.12 python3-config python3.12-config
$
$ ls /usr/local/python/lib
libpython3.12.a pkgconfig python3.12
$
OpenSSL とか使えないので、今回インストールした Python3 は標準では使えないようにしているので、
環境変数 PATH と LD_LIBRARY_PATH を再設定します。
$ export PATH=/usr/local/python/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/python/lib
実行してみます。
$ python3
Python 3.12.4 (main, Jul 13 2024, 23:01:23) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
ちゃんと、3.12.4 になっています。
Raspberry Pi でも最新の Python3 が一応使えるので、Raspberry Pi の有効性があらためて確認できました。
追記:使用した Raspberry Pi はちょっと古い、
$ cat /proc/cpuinfo
.............
Model : Raspberry Pi 4 Model B Rev 1.2
$
です。