Pythonの複数バージョンを同時に使い分ける
Pythonの複数バージョンを同時に使い分ける
背景
ChatGPTのAPIに接続するために環境を自宅のCentOSにインストールしようとしたところ、既にインストールしてあるPythonのバージョン3.6.8ではpipでモジュールをインストールする際に特定のモジュールとの互換性がないエラーでコケてしまう。なぜかPython 3.10を決め打ちで要求されるので仕方なくWindowsにPythonをインストールして使ってみたがやっぱり不便で仕方がないのでCentOSのPythonのバージョンを複数同時に使い分けられたらいいのでは?と思い調べるとpyenvなるツールがあるらしい。
pyenv のインストール
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
無事インストールできたら、~/.bash_profileに以下の環境変数を追加します。
# vi ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
~/.bash_profileを再度読み込みます。
source ~/.bash_profile
確認します。以下のコマンドが認識されればOKです。
# pyenv
各バージョンのPyhtonをインストール
# pyenv install <python_version>
念のため元々インストールしているPython 3.6.8をインストールしておきます。
コマンド
# pyenv install 3.6.8
ChatGPT用にPython 3.10.10をインストールします。
# pyenv install 3.10.10
※多少のワーニングは出ますが、無事インストールされました。
インストールされたバージョンを確認
# pyenv versions
コマンド結果
* system (set by /root/.pyenv/version) <= 現在はシステム標準のものが使われています。
3.6.8
3.10.10
バージョンの切り替え
以下の範囲で切り替えることができます。
コマンド | 切り替えが適用される範囲 |
---|---|
shell | 現在のシェル内でのみ有効なバージョン指定 |
local | 現在のディレクトリとそれ以下のディレクトリで有効なバージョン指定 |
global | システム全体で有効なバージョン指定 |
※優先順位ですが、以下の順で適用されます。
shell > local > global
shellが一番優先され、globalが最も優先度が低い設定です。
切り替え
pyenv localでバージョン変更
今回ChatGPT(OpenAIのAPI)用に専用ディレクトリを用意したのでそこにバージョン3.10.10を適用しようと思います。
pyenv localを使うと、現在のディレクトリとそれ以下のディレクトリで使うバージョンを指定できます。
# cd <folder path>
# pyenv local 3.10.10
# python --version
Python 3.10.10
無事切り替えられました。
Discussion