らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

CentOS 8.1911 のシステム全体へ pyenv をインストールする

pyenv は「特定ユーザにインストールする」方法と「システム全体にインストールする」方法があり、各々以下のような特徴があると思います。

  1. 特定ユーザにインストールする
    • ユーザ権限だけでランタイムやパッケージの 追加・削除が可能
    • 別ユーザから参照出来ないので、作成したアプリケーションを デーモン化し辛い
  2. システム全体にインストールする
    • 管理者権限がなければランタイムやパッケージの 追加・削除が出来ない
    • 全ユーザから参照出来るので、作成したアプリケーションを デーモン化し易い

今回はシステム全体へ pyenv をインストールする方法をメモしておきます。 前提として CentOS 8.1911 を利用しました。

パッケージのインストール

予め、前提になるパッケージをインストールしておきます。

dnf -y install \
  bzip2-devel \
  gcc \
  gcc-c++ \
  git \
  libffi-devel \
  make \
  openssl-devel \
  readline-devel \
  sqlite-devel \
  zlib-devel

pyenv のインストール

pyenv を /usr/local/pyenv へ clone します。

git clone https://github.com/pyenv/pyenv.git /usr/local/pyenv

全ユーザが起動時に pyenv を参照出来るようにする為、全ユーザが参照する環境変数を追加します。

cat << EOF > /etc/profile.d/pyenv.sh
export PYENV_ROOT="/usr/local/pyenv"
export PATH="\${PYENV_ROOT}/bin:\${PATH}"
eval "\$(pyenv init -)"
EOF

ログアウト・ログインし直すか、または下記を実行して環境変数を反映します。

exec $SHELL -l

これで pyenv がシステム全体へインストールされました。 前述の通り、ランタイムやパッケージの追加・修正は管理者権限 (root 権限) が必要な点に注意します。

使い方

管理者権限さえあれば、使い方は基本的に「特定ユーザへインストール」した場合と同じです。 例えば Python 3.8.1 ランタイムをインストールするには以下のように実行します。

pyenv install --list
pyenv install 3.8.1
pyenv global 3.8.1
pyenv rehash