この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: Python3 のインストール
SEOタイトル: Python 3 CentOS インストール完全ガイド (yum/dnf/SCL/pyenv)

この記事の要点
  • CentOS で Python 3 を入れる方法は 3 通り: ① yum / dnf でパッケージ (簡単・推奨) / ② SCL (Software Collections) で複数バージョン共存 / ③ ソースビルド (最新版・自由度高)
  • CentOS 7 標準は python3 = 3.6、CentOS 8 / RHEL 8 は python3 = 3.6 と python3.8 / python3.9 / python3.11 が選べる
  • システム Python (/usr/bin/python) を絶対に上書きしない。yum 自体が Python 依存なので壊すと OS が動かなくなる
  • ソースビルドは ./configure --enable-optimizations --enable-shared + make altinstall/usr/local/bin/python3.x に並列インストール
  • 個人開発・複数バージョン切替には pyenv が最も柔軟

事前確認: 既存の Python バージョン

# 既存バージョン確認
python --version       # 多くは 2.x (CentOS 7 の場合)
python3 --version      # 入っていればバージョン表示
which python3

# CentOS / RHEL のバージョン確認
cat /etc/redhat-release

# 利用可能パッケージ確認
yum list python3* 2>/dev/null | head -30
# CentOS 8/RHEL 8 の場合
dnf list python3* 2>/dev/null | head -30

方法1: yum / dnf で公式パッケージ (推奨)

CentOS 7 / RHEL 7

# Python 3.6 (CentOS 7 の標準)
sudo yum install -y python3 python3-pip python3-devel

# 確認
python3 --version          # Python 3.6.8
pip3 --version

# 3.8 / 3.9 など新しいバージョンを入れたい場合は IUS リポジトリ
sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
sudo yum install -y python39 python39-pip python39-devel
python3.9 --version

# EPEL でも 3.8 等が手に入ることがある
sudo yum install -y epel-release
sudo yum install -y python38

CentOS 8 / Rocky Linux 8 / AlmaLinux 8 / RHEL 8

# 標準は 3.6 がインストール済 / 3.9, 3.11 もモジュールで提供
sudo dnf install -y python3 python3-pip          # 3.6

# 3.9 をモジュールで
sudo dnf module install -y python39
python3.9 --version

# 3.11 を入れる
sudo dnf install -y python3.11 python3.11-pip
python3.11 --version

# デフォルト python3 を 3.11 にしたい
sudo alternatives --set python3 /usr/bin/python3.11
# 元に戻す
sudo alternatives --config python3

CentOS Stream 9 / Rocky 9 / RHEL 9

# 標準で 3.9 がインストール済
python3 --version

# 3.11 / 3.12 を追加
sudo dnf install -y python3.11
sudo dnf install -y python3.12

方法2: Software Collections (SCL) で複数バージョン

CentOS 7 で複数バージョンを共存させたい場合、Red Hat 公式の SCL が安定です。

# SCL リポジトリ追加
sudo yum install -y centos-release-scl

# Python 3.8 をインストール
sudo yum install -y rh-python38

# 一時的に有効化 (シェルセッション内)
scl enable rh-python38 bash
python3 --version       # Python 3.8.x
which python3           # /opt/rh/rh-python38/root/usr/bin/python3

# 恒久的に有効化 (.bashrc に追記)
echo "source scl_source enable rh-python38" >> ~/.bashrc

# 利用可能な SCL Python 一覧
yum list "*python*" --enablerepo=centos-sclo-rh,centos-sclo-sclo

方法3: ソースビルド (最新版・自由度高)

パッケージで提供されない最新版や、特定オプション付きビルドが必要な場合。make altinstall でシステム Python を壊さず並列インストールします。

# 1. ビルド依存をインストール
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel libffi-devel \
                    zlib-devel xz-devel readline-devel \
                    sqlite-devel ncurses-devel uuid-devel \
                    tk-devel gdbm-devel

# 2. ソース取得
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
sudo tar xzf Python-3.11.9.tgz
cd Python-3.11.9

# 3. configure
#    --enable-optimizations : PGO + LTO で 10〜30% 高速化 (ビルド時間↑)
#    --enable-shared        : libpython3.11.so を作成 (uwsgi 等で必要)
#    --prefix               : インストール先 (デフォルト /usr/local)
sudo ./configure \
    --prefix=/usr/local \
    --enable-optimizations \
    --enable-shared \
    --with-system-ffi \
    LDFLAGS="-Wl,-rpath /usr/local/lib"

# 4. ビルド (CPU コア数で並列化)
sudo make -j$(nproc)

# 5. インストール (★ make install ではなく altinstall)
#    install   → /usr/local/bin/python3 を作成 → システム python3 と衝突する可能性
#    altinstall→ /usr/local/bin/python3.11 のみ作成 → 安全
sudo make altinstall

# 6. 確認
/usr/local/bin/python3.11 --version
/usr/local/bin/pip3.11 --version

# 7. PATH 設定 (任意)
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc

方法4: pyenv で複数バージョン管理 (個人開発向け)

# 1. pyenv 取得
curl https://pyenv.run | bash

# 2. .bashrc に追記
cat >> ~/.bashrc <<'EOF'
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
EOF
source ~/.bashrc

# 3. ビルド依存 (root)
sudo yum install -y gcc make patch zlib-devel bzip2 bzip2-devel \
                    readline-devel sqlite sqlite-devel openssl-devel \
                    tk-devel libffi-devel xz-devel

# 4. 利用可能なバージョン一覧
pyenv install --list | grep -E "^\s*3\.(11|12)" | tail -10

# 5. インストール
pyenv install 3.11.9
pyenv install 3.12.3

# 6. 切替
pyenv global 3.11.9               # デフォルト
pyenv local 3.12.3                # カレントディレクトリのみ
pyenv shell 3.10.13               # 現在シェルのみ

python --version                  # 切り替わる

システム Python を壊さない原則

CentOS / RHEL の yumdnfシステム Python (/usr/bin/python or /usr/libexec/platform-python) に依存しています。これを差し替えると OS パッケージ管理が壊れます。

禁忌結果
sudo mv /usr/bin/python /usr/bin/python.bakyum 起動不能
sudo ln -sf python3.11 /usr/bin/pythonyum 動作不安定
sudo pip install --target=/usr/lib/python2.7/site-packagesシステムパッケージと競合
./configure --prefix=/usr + make installシステム Python 上書き

正しいやり方:

  • 新バージョンは /usr/local/ または ~/.pyenv に並列インストール
  • make install ではなく make altinstall
  • システム標準と区別するため python3.11 のようなマイナーバージョン付き名で呼ぶ

virtualenv / venv で環境分離

プロジェクトごとに pip パッケージを分離すべき。venv は標準ライブラリ:

# プロジェクト作成
cd ~/myapp
python3.11 -m venv .venv

# 有効化
source .venv/bin/activate
(.venv) $ pip install --upgrade pip
(.venv) $ pip install django requests
(.venv) $ pip freeze > requirements.txt

# 無効化
deactivate

FAQ

Q: python コマンドで Python 3 を呼びたい
A: CentOS 8+ は sudo alternatives --config python で切替可能。CentOS 7 は ~/.bashrcalias python='python3'。ただしシステムスクリプトが壊れる可能性あるので原則 python3 を使う。

Q: pip がインターネットアクセスできない
A: 社内プロキシ pip install --proxy=http://proxy:8080、社内 PyPI ミラー pip install --index-url http://nexus/repository/pypi-proxy/simple/

Q: OpenSSL バージョンが古くて SSL エラー
A: CentOS 7 標準の OpenSSL 1.0.2 は PyPI と TLS 1.2 で接続不可になる場合あり。OpenSSL 1.1.1 を自前ビルドし、Python の configure 時に --with-openssl=/usr/local/openssl 指定。

Q: CentOS 7 のサポート切れ後はどうすべき?
A: CentOS 7 は 2024/6/30 EOL。Rocky Linux 8/9 / AlmaLinux 8/9 / CentOS Stream 9 等への移行を推奨。Python 3.9 / 3.11 が標準で使えます。