🙆

【Python】複数のPythonバージョンの切り替え

に公開

はじめに

Pythonのパッケージを使う際、Python 3.9 - 3.11といったようにPythonのバージョンが指定されていることが多々あります。特定のバージョンのPythonを使わないと、パッケージがうまく動作しない事は、機械学習のパッケージを使う時などによくある事です。

もし、別のバージョンのPythonが必要となった際、再インストールするのは面倒です。こんな時の問題を解決してくれる主要なツールとしてpyenvがあります。

今回は、pyenvを使用して安全に複数のバージョンのPythonをインストールし、コマンドで簡単にPythonのバージョンを切り替える方法について解説します。

動作環境

  • M1 Mac
  • Python 3.9.6

pyenvとは

pyenvは、Pythonの主要なバージョン管理ツールで、複数のバージョンのPythonをインストールし、異なるバージョンのPythonを簡単に切り替えて使用する事を可能とするツールです。これにより、プロジェクト毎に異なるバージョンのPythonを使う必要がある場合でも、簡単に切り替えて使うことができます。

pyenvのインストール

brew install pyenv

こちらのページに、Windows、Linuxのインストール方法も載っています。

Pathを通す

pyenvを使用するにはPathを通す必要があります。
まず、使っているシェルを確認します。

echo $SHELL
/usr/local/bin/zsh # <- zsh使ってる

zshの場合は.zshrc、bashの場合は.bashrcの末尾に以下のコードを追加します。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

ファイルを保存したら、シェルの設定を反映します。

source ~/.zshrc

バージョン確認

pyenv --version

以上で、pyenvを利用できるようになります。

異なるバージョンのPythonインストール

インストール可能なバージョンを確認できるコマンドを実行します。

pyenv install --list

試しに、Python 3.11をインストールしてみます。
(時間がかかるので辛抱強く待ちます・・)

pyenv install 3.11.10

インストール済みのPythonのバージョンを確認します。
出力結果より、system3.11.10のバージョンがインストールされており、*がついているsystemがアクティベートされています。

pyenv versions

# 出力
* system (set by /Users/hoge/.pyenv/version)
  3.11.10

先ほどインストールした3.11.10をアクティベートします。
以下のコマンドで、アクディベートするPythonを切り替えます。

pyenv global 3.11.10

バージョンが切り替わっているか確認します。

pyenv versions

# 出力
  system
* 3.11.10 (set by /Users/hoge/.pyenv/version)

最後に、pipを更新しておきます。

pip install --upgrade pip

これで、Python 3.11.10を使えるようになります。systemのPythonではないので、パッケージの依存関係などで困ってしまったときも、Pythonを簡単に入れ直すことができます。

Pythonを安全に利用するために、よくvenvを使用することがありますが、私の場合はpyenvを使えば簡単にPythonを入れ直せるので、venvは使わず直接パッケージをインストールして使っています。

最後に、pyenvでインストールしたPythonをアンインストールする方法を示します。
以下のコマンドを使用します。

pyenv uninstall 3.11.10

おわりに

今回は、Windows、Intel Mac、Apple Silicon Mac(M1,M2)に対応し、高速でUbuntuのVMを構築できるソフトウェアとして、Multipassを紹介しました。基本的な操作方法について、この記事を参照していただき、細かい操作についてはGoogle検索やhelpコマンドを確認してみてください。この記事が、少しでも多くの方にとって有益になれば幸いです。

今回は、複数のバージョンのPythonをインストール・切り替えるバージョン管理ツールとしてpyenvを紹介しました。基本的な操作方法について、この記事を参照していただき、細かい操作についてはGoogle検索やhelpコマンドを確認してみてください。この記事が、少しでも多くの方にとって有益になれば幸いです。

Discussion