Oracle Linux 7 に Python 3.7 を入れたかった

Oracle Linux 7 に Python 3.7 系を入れたかったが、結構苦労したのでメモ。Oracle Linux は RedHat Enterprise Linux 系なので、RHEL や CentOS と同様の手順が採用できるはずだが…。

本稿執筆時点で、Yum で直接インストールできる Python は v3.6 系までだった。

ということで、Python v3.7 をソースからビルドしてインストールすることにしたが、make のところで行われるユニットテストが途中で進まなくなり、インストールができなかった。


色々試したがどうにも成功しないので、直接 Python v3.7 を入れることは諦めた。代わりに、ベースとなる Python のバージョンは適当に決めておいて、pipenv などを経由して v3.7 を入れることにする。

Oracle Linux 7 の場合、以下に記載されているとおり、v3.6 なら最初から Yum でインストールできる。

$ yum install -y python3

コレで Python v3.6 が入り、pip3 コマンドも使えるようになる。

$ pip3 install pipenv

で pipenv を入れたが、

$ pipenv --python 3.7

といった要領で Python 本体をインストールできなかった。どうも別途 pyenv を入れないといけないようだ。

pyenv は以下の要領でインストールする。場合によるが、自分はもう root ユーザで作業することにしたので、root ユーザで実施した。

# ホームディレクトリ直下、.pyenv/ ディレクトリに pyenv の資材を落としてくる
$ git clone https://github.com/pyenv/pyenv ~/.pyenv

# 必要事項を .bash_profile に追記する
echo 'export PATH="${HOME}/bin:${PATH}"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"'            >> ~/.bash_profile

source ~/.bash_profile
export PATH="${HOME}/.pyenv/bin:${PATH}"
eval "$(pyenv init -)"

コレで pyenv が使えるようになったので、pyenv を使って Python v3.7 をインストールする。

$ pyenv install 3.7.5
$ pyenv global 3.7.5
$ pyenv rehash

# コレで v3.7.5 がインストールでき、アクティブになった
$ python -V

以降は pipenv を使う際も、ココでインストールした Python v3.7 を認識して $ pipenv install --dev とかが動作するようになる。


うーん、なかなか Python は環境構築がしんどいな。やっぱ Docker で隠蔽しちゃうのが楽ね。