こんにちは、かつコーチです。
「PCに元からPythonが入っているのに、なぜわざわざpyenvを使うの?」と聞かれることがよくあります。
実はこれ、私自身が初心者の頃につまずいたポイントでもあります。
この記事では、pyenvとは何か、なぜ必要なのか、インストールから使い方までを解説します。
pyenvとは?
複数のPythonバージョンを切り替えるツール
pyenv(パイエンブ)とは、1台のPCの中で複数のPythonバージョンを管理し、自由に切り替えられるツールです。
PCには標準でPythonが入っていることが多いですが、これはシステムPythonと呼ばれます。
システムPythonはOSの一部の機能が依存していることがあり、バージョンを変えると不具合の原因になります。
なぜバージョン管理が必要なのか
プロジェクトによって、必要なPythonのバージョンは異なります。
古いプロジェクトはPython 3.9、新しいプロジェクトはPython 3.12を要求する、ということもよくあります。
1つのPythonしか使えないと、プロジェクトごとに環境が衝突してしまいます。
pyenvを使えば、プロジェクトごとに使うバージョンを切り替えられます。
これにより「あるプロジェクトでは動くのに、別のプロジェクトでは動かない」というトラブルを防げます。
pyenvのインストールと使い方
手順1:Homebrewでpyenvをインストールする(macOS)
macOSの場合、Homebrew(パッケージ管理ツール)を使うのが最も簡単です。
brew update
brew install pyenv
手順2:シェルの設定ファイルにパスを通す
インストール後、ターミナルの起動時にpyenvが読み込まれるよう設定します。
zshを使っている場合は~/.zshrcに以下を追記します。
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
手順3:Pythonをインストールする
インストール可能なバージョン一覧は以下で確認できます。
pyenv install --list
任意のバージョンをインストールします。
pyenv install 3.12.4
手順4:バージョンを切り替える
インストールしたバージョンを、システム全体で使うか、特定のディレクトリだけで使うかを選べます。
# システム全体でこのバージョンを使う
pyenv global 3.12.4
# 現在のディレクトリだけでこのバージョンを使う
pyenv local 3.12.4
pyenv localを実行すると、そのディレクトリに.python-versionというファイルが作られます。
このファイルがあるディレクトリでは、自動的に指定したバージョンが使われます。
よくあるつまずきポイント:バージョンが切り替わらない
Before:pyenv installしたのに反映されない
私が最初にpyenvを使ったとき、インストールしたはずのバージョンが反映されず困りました。
$ pyenv global 3.12.4
$ python --version
Python 3.9.6
新しいバージョンを指定したのに、古いシステムのPythonが表示されてしまう状態です。
原因は、シェルの設定ファイルにpyenv initの記述が正しく反映されていなかったことでした。
After:シェルの設定を見直して解決
# .zshrcに設定が入っているか確認
cat ~/.zshrc | grep pyenv
# 設定を再読み込みする
source ~/.zshrc
# バージョンを再確認
python --version
# => Python 3.12.4
設定ファイルを保存した後は、必ずターミナルを再起動するかsourceコマンドで再読み込みしてください。
これを忘れると、変更前のPythonが使われ続けてしまいます。
まとめ
この記事のポイント
- pyenvは1台のPCで複数のPythonバージョンを管理できるツールである
- プロジェクトごとにバージョンを分けることで環境の衝突を防げる
pyenv localで設定したバージョンは、そのディレクトリ内で自動的に有効になる- 設定変更後は必ずシェルを再読み込みする
次に読むべき記事
Pythonのバージョンを用意できたら、次はプロジェクトごとの仮想環境を整えましょう。
「venvで仮想環境を作る方法:なぜ仮想環境が必要か」で詳しく解説しています。
タグ: Python, 初心者向け, 環境構築