はじめに
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のバージョンを確認します。
出力結果より、system
と3.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コマンドを確認してみてください。この記事が、少しでも多くの方にとって有益になれば幸いです。