CentOS(Linux)にPythonをインストール(Python2_Python3)

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「CentOSにPythonをインストールしたいが、どのコマンドを実行すればいいかわからない」
「Python2とPython3の違いは何か、どちらを使えばいいのか迷っている」
「CentOS 7のサポートが終了したと聞いたが、後継OSでの手順はどう変わるのか」

こういった疑問は、Linuxを使い始めたばかりの方から現場の実務担当者まで、よく耳にします。

この記事では、CentOS 7(Linux)でのPython2・Python3それぞれのインストール方法と、実際にプログラムを動かすまでの手順を順を追って解説します。CentOS 7の後継OSであるAlmaLinux・Rocky LinuxでのPython3インストール手順も後半でまとめています。

この記事のポイント

・CentOS 7 にはPython 2.7 がデフォルトでインストール済み
・Python3は「yum -y install python3」で追加インストールできる
・python コマンドとpython3.6コマンドは別物なので混同しないよう注意
・システムのpythonシンボリックリンクをPython3に切り替えるのはCentOS 7では非推奨
・CentOS 7はサポート終了(2024年6月)のため、新規サーバーはAlmaLinux・Rocky Linuxへの移行を推奨
・AlmaLinuxではdnfでPython3をインストールし、alternativesコマンドでpythonコマンドを有効化する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Pythonのパスを確認

CentOS 7(Linux)では、デフォルトでPython 2.7 がインストールされています。
インストールされているかの確認は、which コマンドで行います。
whichはコマンドの実体がどのパスに存在するかを表示するコマンドです。

一般ユーザーで実行してください。

$ which python
/usr/bin/python


/usr/bin/python というパスが返ってきたら、Pythonが利用できる状態です。
何も返ってこない場合は後述のインストール手順を実行してください。

なお、Python3を使いたい場合は python3 または python3.6 コマンドで確認します。
CentOS 7 ではデフォルトで python コマンドはPython2を指すため、この区別を最初に頭に入れておくと後の混乱を防げます。

Pythonのバージョンを確認

パスが確認できたら、バージョンを確認します。

$ /usr/bin/python -V
Python 2.7.5


「Python 2.7.5」のようにバージョンが表示されれば、Pythonが利用できます。
CentOS 7 のデフォルト構成では、2.7系が入っているのが一般的です。

もし上記のようにならない場合、またはPython2をクリーンにインストールしたい場合は、次の手順を実行してください。

Python2のインストール

このコマンドは、Python2のバージョンアップにも使用できます。
root権限で実行します。

$ su -
パスワード:
# yum -y install python


インストール後はパスを再確認してください。
root環境ではPythonのパスが異なる点に注意が必要です。

# which python
/bin/python


一般ユーザーでは /usr/bin/python、rootユーザーでは /bin/python と、パスが異なります。
スクリプトをcronで自動実行するときなど、実行ユーザーによってパスが変わる点を覚えておいてください。

【注意】Python 2は2020年1月1日にサポートが終了しています(EOL)。
新規のシステムやスクリプト開発にはPython3を使うことを強く推奨します。現場の標準はすでにPython3に移行済みです。

Python3のインストール

実務では、Python3を使いたい場面が増えています。
Python2は2020年1月にサポートが終了しており、新規開発ではPython3を使うのが現場の標準です。

CentOS 7 へのPython3インストールは、root権限で次のコマンドを実行します。

# yum -y install python3


yumのリポジトリにはPython 3.6系が収録されています。インストール後のバージョン確認は次のセクションで行います。

【CentOS 7のサポート終了について】
CentOS 7は2024年6月30日にサポートが終了しました。現在稼働中のCentOS 7サーバーは順次、AlmaLinuxまたはRocky Linuxへの移行が推奨されています。
後継OSでのPython3インストール手順は後半の「AlmaLinux・Rocky Linux(CentOS後継OS)でのPythonインストール」セクションを参照してください。

Python3のインストール後確認

Python3の確認は、バージョン番号を含めたコマンドで行います。
バージョン指定しないと、Python2の結果が返される点に注意してください。

# which python3.6
/bin/python3.6
# python3.6 -V
Python 3.6.8


Python3をインストールした後でも、バージョン指定なしでpythonコマンドを実行するとPython2の結果が表示されます。

# which python
/bin/python
# /bin/python -V
Python 2.7.5


これはCentOS 7 のシステムがPython2を前提に構築されているためです。
「python3.6」と「python」は別々のコマンドとして共存しています。

Python2でプログラムの実行

それでは、実際にPythonプログラムを動かしてみましょう。
viエディタで hollo_python.py ファイルにプログラムを記述します。

$ vi hollo_python.py
print ("Hello, Python")

記述したら「:wq」で保存終了します。

Pythonプログラムを実行します。
実行するには、「python ファイル名」を指定します。

$ python hollo_python.py
Hello, Python


「Hello, Python」と表示されれば、正しく動作しています。
ただし、この実行はPython2で行われています。
次にPython3で実行してみましょう。

Python3でプログラムの実行

$ python3.6 hollo_python.py
Hello, Python


Python3での実行はコマンドに「python3.6」とバージョンまで指定する必要があります。
毎回バージョンを入力するのが面倒な場合は、シンボリックリンクを変更することでデフォルトバージョンを切り替えられます。
ただし、後述の通りCentOS 7 での変更は注意が必要です。

Python3をデフォルトバージョンにする

/usr/bin/python のシンボリックリンクをpython3.6に向け直す手順です。
この作業はroot権限が必要になります。

$ su -
パスワード:
# ls -l /usr/bin/python ←現状のpythonファイルの状態を確認します。
lrwxrwxrwx 1 root root 7 4月 2 19:48 /usr/bin/python -> python2  ←python2にシンボリックリンクされています。
# mv /usr/bin/python /usr/bin/python_bak ←現状のpythonファイルを退避させます。
# ln -s python3.6 /usr/bin/python pythonファイルにpython3.6のシンボリックリンクを指定します。
# ls -l /usr/bin/python ←再度、pythonファイルの状態を確認します。
lrwxrwxrwx 1 root root 9 4月 2 20:16 /usr/bin/python -> python3.6
# python -V  ←バージョンを確認します。
Python 3.6.8  ←python3として動作します。
$ python -V  ←一般ユーザーでも確認します。
Python 3.6.8  ←python3として動作します。
$ python hollo_python.py ←python3環境でプログラムを実行します。
Hello, Python


【注意】CentOS 7 では、yumコマンドなどシステムレベルでPython2に大きく依存している部分があります。
/usr/bin や /bin の python をシンボリックリンクで置き換えると、yumが動作しなくなるなどの障害が発生する可能性があります。
本番環境での変更は止めておいた方が安全です。


Python3を常用したい場合は、後述する仮想環境(venv)の利用を強く推奨します。

AlmaLinux・Rocky Linux(CentOS後継OS)でのPythonインストール

CentOS 7は2024年6月30日にサポートが終了しました。新規サーバーや移行先として、AlmaLinux 9またはRocky Linux 9が現場では多く選ばれています。
これらのOS(RHEL 8/9系)では yum の後継パッケージマネージャーである dnf を使ってPython3をインストールします。

Python3のインストール(dnf)

root権限または sudo で実行します。

# dnf install python3 python3-pip -y

# python3 --version
Python 3.11.9
# pip3 --version
pip 23.0 from /usr/lib/python3.11/site-packages/pip (python 3.11)


AlmaLinux 9 / Rocky Linux 9 のリポジトリにはPython 3.11系が収録されています(バージョンは環境や時期によって異なります)。

pythonコマンドを有効化する(alternatives)

CentOS 7とは異なり、AlmaLinux 9以降ではシンボリックリンクを直接書き換える代わりに alternatives コマンドを使うのが安全な方法です。

# alternatives --set python /usr/bin/python3

# python --version
Python 3.11.9


この方法なら、元のpythonシンボリックリンクをバックアップする必要がなく、alternatives --auto python で元の状態に戻せます。
システムへの影響が最小限で済むため、本番環境での切り替えには alternatives を使う方法が推奨されています。

よくあるエラーと対処法

CentOS 7 でPythonを使い始めたときによく遭遇するエラーをまとめます。

「No such file or directory」— python3が見つからない

$ python3 hello.py
-bash: python3: command not found


Python3がインストールされていません。「yum -y install python3」を実行してください。
インストール後は python3.6 コマンドで使用できます。

「SyntaxError」— print文の書き方の違い

Python2と3では print の書き方が異なります。

# Python2の書き方(カッコなし)
print "Hello"

# Python3の書き方(カッコあり)
print("Hello")


Python2用のコードをPython3で実行すると SyntaxError が発生します。
実務の現場では、既存のPython2コードをPython3に移行する際にこのエラーに最初に遭遇することが多いです。

「IndentationError」— インデント(字下げ)エラー

Pythonはインデントが文法の一部です。
スペースとタブを混在させると IndentationError が発生します。
viエディタで編集する場合は、:set expandtab で入力したタブをスペースに自動変換できます。

「Permission denied」— 実行権限がない

スクリプトに実行権限を付与していない場合に発生します。

$ chmod +x hollo_python.py
$ ./hollo_python.py


「ModuleNotFoundError」— ライブラリが見つからない

pip install したのに import できない場合、インストール先のPythonと実行時のPythonがずれています。

# 実行しているPythonのパスを確認
$ which python3.6
/bin/python3.6

# そのPythonに対応したpipでインストール
$ python3.6 -m pip install requests


実務の現場では「pipでインストールしたはずなのにimportできない」というトラブルはよく発生します。
python3.6 -m pip install の形式で実行すると、Pythonとpipのバージョンのずれを防げます。

仮想環境(venv)を使って依存ライブラリを管理する

Python3.6以降では venv(仮想環境)が標準機能として使えます。
複数のプロジェクトで異なるバージョンのライブラリを使いたい場合に非常に便利な機能です。

運用現場では「プロジェクトAはrequests 2.28を使い、プロジェクトBはrequests 2.31を使う」といった状況が実際に発生します。
仮想環境を使えばシステム全体のPython環境を汚さずに、プロジェクトごとに独立した依存ライブラリを管理できます。

仮想環境の作成と有効化

# プロジェクト用ディレクトリを作成して移動
$ mkdir my_project && cd my_project

# 仮想環境を作成(「venv」という名前のフォルダが作成される)
$ python3.6 -m venv venv

# 仮想環境を有効化
$ source venv/bin/activate

# プロンプトが変わり、仮想環境に入ったことがわかる
(venv) $


プロンプトの先頭に (venv) が付いたら仮想環境が有効になっています。

ライブラリのインストールと仮想環境の終了

# 仮想環境内にライブラリをインストール(システム全体には影響しない)
(venv) $ pip install requests

# 仮想環境から抜ける
(venv) $ deactivate
$


仮想環境を使わない場合のpip --user(システムを汚さないインストール)

仮想環境を作るほどではないが、システム全体のPython環境に影響を与えたくない場合は --user オプションが使えます。

# ユーザー空間にインストール(root権限不要・システムに影響しない)
$ python3.6 -m pip install requests --user

# インストール場所の確認
$ python3.6 -m pip show requests
Location: /home/user/.local/lib/python3.6/site-packages


【注意】sudo pip install はシステム全体のPython環境に影響を与えるため、できる限り避けてください。
yumが管理しているPythonパッケージと競合し、システムツールが動作しなくなるトラブルの原因になります。

まとめ

CentOS 7 でのPython2/Python3インストールと実行の要点をまとめます。
やりたいこと コマンド・手順
Pythonのパスを確認 which python
Pythonのバージョンを確認 /usr/bin/python -V
Python2をインストール(CentOS 7) yum -y install python(root権限)
Python3をインストール(CentOS 7) yum -y install python3(root権限)
Python3をインストール(AlmaLinux・Rocky Linux) dnf install python3 python3-pip -y(root権限)
pythonコマンドを有効化(AlmaLinux) alternatives --set python /usr/bin/python3
Python3のパスを確認 which python3.6
Python2でスクリプト実行 python ファイル名.py
Python3でスクリプト実行 python3.6 ファイル名.py
仮想環境を作成 python3.6 -m venv venv
仮想環境を有効化 source venv/bin/activate
ライブラリをユーザー空間へインストール python3.6 -m pip install ライブラリ名 --user
【重要】 CentOS 7 では、yumをはじめシステムのコアコンポーネントがPython2に依存しています。
/usr/bin/python のシンボリックリンクをPython3に変更すると、yumが動作しなくなるなど本番環境での障害につながる可能性があります。
Python3を実務で使う場合は、仮想環境(venv)を使って安全に運用することを強く推奨します。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。