Python 3.10以降でpipを使うにはOpenSSL 1.1が必要ですが、古いCentOS 7ではOpenSSL 1.1がデフォルトで入っていません。また、Python 3.10や3.12を使うにはソースコードからインストールする必要があります。以下は、SSL対応を確保しながらPython 3.12をインストールする方法です。
環境
- CentOS Linux release 7.8.2003 (Core)
- gccはデフォルトのまま
OpenSSL 1.1のインストール
管理者権限で以下のコマンドを実行します。
# CentOS 7でepel-releaseを使うようにする yum install epel-release # 開発ツールと依存パッケージをインストール yum groupinstall "development tools" yum install bzip2-devel gdbm-devel libffi-devel libuuid-devel ncurses-devel \ openssl11 openssl11-devel readline-devel sqlite-devel xz-devel \ zlib-devel tk-devel --enablerepo=epel
Python 3.12のインストール
依存パッケージのインストール
yum -y install gcc zlib-devel libffi-devel bzip2-devel \ ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel \ libuuid-devel readline-devel
Python 3.12のソースコードダウンロードと解凍
cd /usr/src wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz tar xvf Python-3.12.0.tar.xz cd Python-3.12.0
ビルドとインストール
# tkinterを使用したい場合 export TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5" # OpenSSL 1.1.1の設定 export CPPFLAGS="$(pkg-config --cflags openssl11)" export LDFLAGS="$(pkg-config --libs openssl11)" # configure処理 ./configure --prefix=/opt/python3.12 --enable-ipv6 \ --enable-loadable-sqlite-extensions --with-system-ffi --with-lto \ --enable-optimizations # ビルドとインストール make -j8 make altinstall
インストール確認
/opt/python3.12/bin/python3.12 --version
SSLモジュールの確認
/opt/python3.12/bin/python3.12 -m pip install --upgrade pip /opt/python3.12/bin/python3.12 >>> import ssl
エラーが出なければ成功です。以上でPython 3.12がCentOS 7にインストールされました。