2.

Linux に Python をインストールする方法(Ubuntu / CentOS / ソースビルド / pyenv)

編集
この記事の要点
  • Ubuntu / Debian: sudo apt install python3 python3-pip python3-venv
  • CentOS / RHEL: sudo dnf install python3 python3-pip(または yum)
  • OS 同梱の Python はバージョンが古いことが多いため、新バージョンは pyenv or ソースビルド
  • ソースビルドは必ず make altinstall を使う。make install は OS の python を上書きしシステムを壊す
  • pyenv 利用は他バージョンを汚さない最も安全な方法。pyenv install 3.12.1 で導入
  • インストール後は python3 -m venv venv でプロジェクト毎に仮想環境を作る

方法1: ディストリのパッケージ(標準・最も簡単)

OSインストールコマンド同梱 Python
Ubuntu 22.04sudo apt install python3 python3-pip python3-venvPython 3.10
Ubuntu 24.04同上Python 3.12
Debian 12同上Python 3.11
CentOS 7sudo yum install python3 python3-pipPython 3.6(古い!)
RHEL 9 / Rocky 9sudo dnf install python3 python3-pipPython 3.9
Fedora 39sudo dnf install python3 python3-pipPython 3.12
Amazon Linux 2023sudo dnf install python3 python3-pipPython 3.9

Ubuntu / Debian での詳細手順

# パッケージリスト更新
sudo apt update

# Python 3 + pip + venv をまとめてインストール
sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential

# 確認
python3 --version
# Python 3.10.12
pip3 --version
# pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

# 開発で必要になりがちなヘッダもまとめて
sudo apt install -y \
    libssl-dev libffi-dev libbz2-dev libreadline-dev libsqlite3-dev \
    libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev \
    libxmlsec1-dev liblzma-dev

# 複数の Python バージョンが欲しい場合(PPA)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12 python3.12-venv python3.12-dev

RHEL / CentOS / Rocky Linux での詳細手順

# RHEL 9 / Rocky Linux 9
sudo dnf install -y python3 python3-pip python3-devel gcc

# CentOS 7(古い)
sudo yum install -y python3 python3-pip python3-devel gcc

# 新しい Python を入れたい(RHEL 8/9 の AppStream)
sudo dnf module list python39 python311 python312
sudo dnf module enable python311
sudo dnf install python3.11

# 確認
python3.11 --version

方法2: ソースからビルド

OS が最新 Python を提供しない場合、公式ソースをビルドします。必ず make altinstall を使うこと:

# ビルド前提パッケージ(Ubuntu)
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev libncurses5-dev libffi-dev \
    libxml2-dev libxmlsec1-dev liblzma-dev xz-utils tk-dev wget

# ソース取得
cd /tmp
wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz
tar xzf Python-3.12.1.tgz
cd Python-3.12.1

# configure(最適化込み)
./configure --enable-optimizations --with-ensurepip=install --prefix=/usr/local

# ビルド(CPU コア数だけ並列)
make -j$(nproc)

# 重要! altinstall を使う
sudo make altinstall

# python3.12 として呼び出せる(system python は壊さない)
python3.12 --version

make install vs make altinstall の違い:

  • make install/usr/local/bin/python3 を上書き。OS 標準の python3 が破壊され、apt や yum が動かなくなる可能性あり
  • make altinstall/usr/local/bin/python3.12 としてバージョン付きで配置。既存の python3 を壊さない

方法3: pyenv(最推奨)

複数バージョンを切り替えたい・OS の python を絶対に壊したくない場合:

# ビルド依存関係(前述)が必要

# pyenv インストール
curl https://pyenv.run | bash

# ~/.bashrc に追加(出力された内容をコピー)
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# シェル再読込
exec $SHELL

# 利用可能なバージョン一覧
pyenv install --list | grep "^  3\.12"

# 任意のバージョンをインストール
pyenv install 3.11.7
pyenv install 3.12.1

# グローバル設定
pyenv global 3.12.1
python --version
# Python 3.12.1

# プロジェクトディレクトリで限定
cd ~/projects/myapp
pyenv local 3.11.7
# → .python-version ファイルが生成される

# 設定済みバージョンを確認
pyenv versions

方法4: Anaconda / Miniconda

# Miniconda を取得
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# シェル再起動
source ~/.bashrc

# 環境作成
conda create -n myenv python=3.11
conda activate myenv
conda install numpy pandas

pip の使い方(インストール後)

# pip 自体の更新
python3 -m pip install --upgrade pip

# パッケージインストール(システムグローバル → NG)
sudo pip install requests   # ✗ OS パッケージを壊す可能性

# 推奨: venv 内で
python3 -m venv ~/myapp/venv
source ~/myapp/venv/bin/activate
pip install requests        # ○ venv 内で完結

# ユーザー領域に入れる(venv 使わない場合)
pip install --user requests

venv で仮想環境(推奨フロー)

cd ~/projects/myapp
python3 -m venv venv

# 有効化
source venv/bin/activate

# プロンプトに (venv) が表示される
(venv) $ pip install -r requirements.txt

# 無効化
deactivate

インストール先と PATH の確認

# どの python が呼ばれるか
which python3
which python

# 全候補
which -a python3

# Python が認識しているライブラリパス
python3 -c "import sys; print('\n'.join(sys.path))"

# 環境変数
echo $PATH
env | grep PYTHON

FAQ

Q: python コマンドだけだとエラー
A: Ubuntu などは python3 しか入れない。sudo apt install python-is-python3python エイリアスを追加。

Q: pip installerror: externally-managed-environment
A: Ubuntu 23.04+ / Debian 12+ の新仕様。OS パッケージを守るためグローバル pip を拒否する。必ず venv 内で実行する(PEP 668)。

Q: CentOS 7 で 3.10 以上を使いたい
A: dnf module enable python311 または pyenv でソースビルド。/usr/bin/python は yum 依存なので絶対に上書きしない。

Q: Docker でビルド時間を短くしたい
A: マルチステージビルド + FROM python:3.12-slim 公式イメージ。ホスト OS の Python は触らない。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ダウンロード&インストール方法(Windows)
  2. インストール方法(Linux)
  3. コマンド一覧
  4. SQL
  5. データ型
  6. 関数
  7. 管理ツール
  8. 設定
  9. パフォーマンスチューニング関連
  10. エクスポートおよびインポート
  11. エラー&トラブル
  12. 文字コードの確認
  13. 実行中の SQL の状態確認およびプロセスキルの方法
  14. パスワードの無効化設定
  15. root ユーザーの初期パスワード確認方法
  16. rootユーザーのパスワード変更方法
  17. LIMIT, OFFSET の始まりと挙動
  18. mysqlのバージョン確認方法
  19. 実行計画の表示方法
  20. レプリケーションのステータス確認方法
  21. 中央値の導き方(バージョン8未満)
  22. 階層SQL(バージョン8未満)
  23. パーセンタイルの導き方
  24. 特定スキーマの全テーブルの全カラム情報を取得する方法
  25. MySQLで文字列の置換をする方法