Pythonバージョン3は文法に後方互換性がない。システム全体にインストール済みのバージョン2系がある場合は、それは残しておく。バージョン2系のパッケージやコマンドの名前はただのpython
、バージョン3の場合はpython3
などと区別して利用できる。
パッケージ管理システムのリポジトリにpython3
パッケージがあればすぐインストールできる。他に、ソースからビルドする方法、Dockerのpythonイメージを利用する方法もある。
端末を開いて作業する。
近年のUbuntuやDebianでは、パッケージ管理システムのリポジトリにpython3
パッケージがある。
CentOS7のデフォルトのリポジトリではバージョン2系なので、追加のリポジトリを利用するか、ソースからビルドする。
まず必要なパッケージ(Development Tools
、zlib-devel
、openssl-devel
、libffi-devel
(Python3.7から))をこちらはyum
コマンドでシステム全体にインストールする。
# 管理者権限で
# コンパイラgccなどが含まれる開発ツールパッケージグループ。
yum groups install "Development Tools"
# うまくいかないならこれらも
# yum groups mark install "Development Tools"
# yum groups mark convert "Development Tools"
# python3やpip3で最低限必要なパッケージ。
yum install zlib-devel openssl-devel libffi-devel
# その他オプション・モジュール有効にするなら。
yum install bzip2-devel readline-devel sqlite-devel xz-devel gdbm-devel tk-devel
依存パッケージを入れたらソースからビルドへ。
ユーザのホームディレクトリ以下に、ユーザ権限で、Python3のソース(例: 最新版3.6.5(XZ compressed source tarball))からビルド・インストールする例。予め依存パッケージを入れておかないとエラーになる。
# インストール先の例
target=$HOME/local/python3
# インストール先に移る
mkdir -p $target; cd $target
# ダウンロード
url=https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
curl -LO $url
# 展開
tar --extract --xz --file Python-3.6.5.tar.xz
ls
Python-3.6.5 Python-3.6.5.tar.xz
# インストール
# エラーが出るなら足りない依存パッケージをインストールしてやり直す。
cd Python-3.6.5
./configure --prefix=$target || echo 'エラー'
# 数分?時間かかる
make && make install || echo 'エラー'
# エラーと出なければ成功
インストール先にできたbin/
ディレクトリにコマンドが入っているので、PATH
変数に追加してどこからでもコマンドを実行できるようにする。
# インストール先の例
target=$HOME/local/python3
# パス追加
PATH=$target/bin:$PATH
# 今回のパスを優先したくないなら(以降同様)
# PATH+=:$target/bin
# manマニュアルも利用できるように
MANPATH=$target/share/man:$MANPATH
# 次回以降のシェル端末でも有効化のため、~/.bashrcに追記
echo "PATH=$target/bin:\$PATH" >> ~/.bashrc
echo "MANPATH=$target/share/man:\$MANPATH" >> ~/.bashrc
ソースからのインストールがうまくできない場合などは、EPELリポジトリからPython3をシステム全体にインストールする。
まずEPELリポジトリ(epel-release
パッケージ)をインストールする。
yum install epel-release
ここで、EPELリポジトリをデフォルトでは無効にしておきたいなら、設定ファイル/etc/yum.repos.d/epel.repo
のenabled
を書き換えておく。
[epel]
# 0で無効に
enabled=0
EPELリポジトリからpython36-devel
パッケージ(バージョン3.6)をインストールする。コマンドはpython3.6になっている。
yum --enablerepo=epel install python36-devel
type python3.6
python3.6 は /usr/bin/python3.6 です
Ubuntu16.04や18.04にはpython3
パッケージがあるので、インストール済みでなければ、
sudo apt install python3
依存パッケージをパッケージ管理システムからapt build-dep
コマンドでまとめてインストールする例。
まずコマンドに必要な作業をする。「ソフトウェアとアップデート」画面を出し(Superキーで「アクティビティ」画面 → 「software」で検索)、「Ubuntuのソフトウェア」タブの「ソースコード」にチェックを入れる(/etc/apt/sources.list
を編集している)。ビルド完了したら戻してもいい。
# 情報更新してから
sudo apt update
# Python3.6のビルドに最低限必要なパッケージ。
sudo apt build-dep python3.6
依存パッケージを入れたらソースからビルドへ。
Dockerをインストール済みなら、Dockerの公式イメージpython:3
からコンテナを作成してPython3を利用する方法もある。
# コンテナのシェル起動
docker run --rm -it --name test python:3.6 bash
python3 --version
Python 3.6.5
末尾に数字の付かないpython
コマンドはバージョン2系の場合がある(CentOS7など)。
type python
python は /usr/bin/python です
ls -l /usr/bin/python
lrwxrwxrwx. 1 root root 7 9月 24 11:34 /usr/bin/python -> python2
Python3が前提の当サイトではpython3
コマンドで表記する。
上記のようにインストールしたPython3本体とは別に、外部ライブラリを利用することがある。外部ライブラリはpip3
コマンドでインストールするのが便利。ソースからビルドした場合などはpip3
が含まれているが、もし入っていないならpip3自体のインストールへ。
pip3 --version
外部ライブラリにも各バージョンがあり、開発ケースごとに依存バージョンが異なるなどの衝突を避けるため、Python仮想環境virtualenv
を利用すると便利。Python仮想環境virtualenvへ。
virtualenv --version