Python3.7.3 インストール

サイトからTGZをダウンロードして入れてみます。
yumのほうが管理しやすいけど、この方法に慣れてもらうのも一興かと。

もうね。
基本はPythonJapanさまの 「CentOS 環境のPython」 に書いてあるとおり!

https://www.python.org/downloads/
に行って、好きなリリースバージョンを選びます。
下の方にある「Files」から「Gzipped source tarball」で好きなところにダウンロードする。

ダウンロードしたもの(今回は3.7.3)を以下の要領で解凍します。

tar -zxvf Python-3.7.3.tgz

解凍できたら中に入って「configure → make → make install」をかける。
「–enable-optimizations」をつけると、configure途中でインストール先でのテストを実行して更に最適化してくれるらしい。
一説には1割2割は早くなるとか。(Pythonインストール時の最適化
ただ項目が多いので結構時間がかかる。

cd Python-3.7.3/
./configure --enable-optimizations --enable-shared
make
make install

configure では素直だったのに make install の途中で

ModuleNotFoundError: No module named '_ctypes'

とか言われたりします。
その時はあわてず

yum install libffi-devel

と入力してあげてください。
その後はもう一度 configure からやり直しです。

晴れて make install まで完了したら

sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/custom_python3.conf"

を謎の呪文のごとく入れて完了~

喜び勇んで

python

と入力すると

Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

と、CentOSでデフォルトで入っているPython2が反応してくれます。

イラッとしながら /usr/bin/ 配下を覗くと

lrwxrwxrwx  1 root root           7  1月 21 17:32 python -> python2
lrwxrwxrwx  1 root root           9  1月 21 17:32 python2 -> python2.7
-rwxr-xr-x  1 root root        7216 10月 31 08:46 python2.7

先住の方がいらっしゃるので仕方がありません。

$ which python3.7
/usr/local/bin/python3.7
$ sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3

として python3 だけでも3系で反応してほしいと願います。

python3
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

アレレ~?
いちおう他にも足りないものがないか確認しておきます。

$ ldd python3.7
        linux-vdso.so.1 =>  (0x00007ffd21df3000)
        libpython3.7m.so.1.0 => not found
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f12d825f000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f12d8043000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f12d7e3f000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f12d7c3c000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f12d793a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f12d756d000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f12d736a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f12d8496000)

こいつだけっぽいですね。
今回は「libpython3.7m.so.1.0」は /usr/local/lib にいました。
他の人と同じ場所、「/lib64/」にあるようにリンクを貼ります。

ln -s /usr/local/lib/libpython3.7m.so.1.0 /lib64/

で!

python3
Python 3.7.3 (default, Apr  9 2019, 15:07:31)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.

やれやれ~