はじめに
pyenvを使ってから、勉強会やハッカソン等でPythonの環境を合わせるのが楽になったので、pyenvのインストールや使い方をまとめました。
Waffleアドベントカレンダー9日目の記事です。
環境
・mac (Sequoia 15.0.1)
pyenvとは?
pyenvとはPythonのバージョン管理ができるコマンドラインツールです。
通常、pythonをインストールすると、1つのバージョンしか扱うことができません。pyenvを用いることで、複数のPythonのバージョンを管理することができ、必要に応じてPythonのバージョンを切り替えることができます。
pyenvの使い方
1. pyenvのインストール
pyenvをインストールする際は、Homebrewを使います。
brew install pyenv
インストールできているか確認
pyenv -v
ここで、pyenvのバージョンが出てきたら、成功です。
2. pyenvの初期設定
pyenvの初期設定を行なっていきます。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
以下のコマンドを実行し、.zshrcファイルの設定を反映させます。
source ~/.zshrc
3. Pythonのインストール
pyenvを使って、Pythonをインストールしていきます。
まず、インストールできるPythonのバージョンを確認します。
pyenv install --list
このコマンドを実行すると、以下のように、インストールできるPythonのバージョンの一覧が出てきます。(一部抜粋)
3.12.5
3.12.6
3.12.7
3.13.0
3.13.0t
3.13-dev
3.13t-dev
3.14.0a1
3.14.0a1t
3.14-dev
3.14t-dev
次に、Pythonをインストールします。例として、3.12.1をインストールします。
pyenv install 3.12.1
次に、インストールされたPythonのバージョンを確認します。
pyenv versions
すると、以下のような結果が出力されます。
* system (set by /Users/username/.pyenv/version)
3.12.1
まだこの状態では 3.12.1 を使用できません。もし、Macに元々Pythonをインストールしている場合、そのバージョンのPythonを使用おり、インストールされていない場合もまだ使用することができません。 今回インストールしたバージョンのPythonに変更します。バージョンの切り替えには、globalコマンドを用いるか、localコマンドを用いるか2パターンあります。
●globalコマンドとlocalコマンドの違い
・globalコマンド:どのフォルダでも、指定したPythonのバージョンを使用することができる。
・localコマンド:実行したディレクトリ内だけで、指定したPythonのバージョンを使用することができる。
# globalで、Pythonのバージョンを変更
pyenv global 3.12.1
# localで、Pythonのバージョンを変更
pyenv local 3.12.1
以下のコマンドを実行して、pythonのバージョンを確認します。
python --version
結果として、Python 3.12.1が出力されていれば、大丈夫です。
補足
Pythonのバージョンを切り替えるごとに、必要に応じてパッケージを一からインストールする必要があります。
通常以下のコマンドでパッケージをインストールします。
pip install [package名]
例として、numpyをインストールする際は、以下のコマンドで行います。
pip install numpy
もし、ハッカソン等で、他の方に自分の環境に合わせてもらう、あるいは合わせる場合、以下のコードを実行すると、インストールの作業が楽になります。
# 自分の環境でインストールされているパッケージをrequirements.txtに書き出す
pip freeze > requirements.txt
# 書き出したパッケージを一気にインストールする
pip install -r requirements.txt
おわりに
今回、pyenvを用いて、Pythonのバージョンを管理しました。pyenvを用いることで、パッケージとの互換性の問題の解消に繋がったり、各プロジェクトにあったバージョンに簡単に変更することが出来る点が、とても便利だなと感じました。pyenv以外にも、Pythonのバージョンを管理するツールはいっぱいあります。自分でどの仮想環境を構築するツールを使うか調べてみるのも面白そうだなと思います。