- pyenvってどんなもの?
- 使い方をさくっと知りたい
pyenv は同じ PC に複数バージョンの Python をインストールできるようにするツールです。
Python には多くのバージョンがあり、プロジェクトや環境に応じて異なるバージョンの Python を利用したいシーンは多くあります。
そんな時に pyenv を使うとシステムに複数バージョンの Python をインストールして、プロジェクトごとに使用するバージョンを使い分けられます。
Python を扱う方は実質的に必須のツールとなっていますので、ぜひ使い方をマスターしてください。
pyenv のインストール方法
OS ごとにインストール方法が異なります。
お使いの OS に応じて読み進めてください。
macOSの場合
まだ Homebrew をインストールしていない場合には、以下を実行して Homebrew をインストールしてください。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
以下のコマンドを実行して、pyenv をインストールします。
brew update
brew install pyenv
続いて、お使いのシェルの設定ファイルを開いてください。
# bash の場合
vi ~/.bash_profile
# zsh の場合
vi ~/.zshrc
以下のコードを追記してください。
eval "$(pyenv init --path)"
pyenv の初期化スクリプトを実行して、pyenv が管理する Python バージョンを利用できるようにするコマンドです。
コマンドのより詳しい説明
- eval
- シェルコマンドの一種。
- 引数として渡された文字列をシェルコマンドとして実行する。
- 上の例では、
pyenv init --path
の出力をシェルコマンドとして実行する
- $(…)
- コマンド置換と呼ばれる構文。
- 先ほどの場合は、
pyenv init --path
が実行される。 - 括弧内のコマンドが実行される。
- 出力がこの位置に挿入される。
- pyenv init –path
- Pythonのバージョン管理ツールで、複数のPythonバージョンをインストールして切り替えることができる。
- pyenv init は pyenv の初期化スクリプトを実行する。
- –path オプションは pyenv によって管理されるPythonの実行可能ファイルへのパスを設定するために使用される。
シェルの再起動をします。
# bashの場合
source ~/.bashrc
# zshの場合
source ~/.zshrc
Windows
Windows では、pyenv の Windows 版である pyenv-win を使用します。
pip install pyenv-win --target $HOME/.pyenv
システムの環境変数として、以下を追加します。
PYENV
を%USERPROFILE%\.pyenv\pyenv-win
に設定。Path
に%PYENV%\bin;%PYENV%\shims
を追加。
シェルの再起動をします。
# bashの場合
source ~/.bashrc
# zshの場合
source ~/.zshrc
Linux
Linux では Git からインストールすることが多いです。
まずは依存関係をインストール。
sudo apt-get update;
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev \
libffi-dev liblzma-dev python-openssl git
続いて Git Clone します。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
シェル設定ファイルに以下を追加します。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
シェルの再起動をします。
# bashの場合
source ~/.bashrc
# zshの場合
source ~/.zshrc
動作確認
以下を実行して、バージョン情報が返ってくれば、インストールは成功です。
pyenv --version
pyenv の基本的な使い方
Python のバージョンをインストールする方法
まずは pyenv で利用可能な Python のバージョンを取得します。
pyenv install --list
以下に取得結果を一部抜粋したものを示します。
3.11.0
3.11-dev
3.11.1
3.11.2
3.11.3
3.11.4
3.11.5
3.11.6
3.11.7
3.12.0
3.12-dev
3.12.1
3.13.0a2
3.13-dev
この中からインストールしたい Python のバージョンを選んだら、以下のようにコマンドを実行します。
pyenv install 3.11.7
これでシステムに対して Python 3.11.7 というバージョンがインストールされます。
特定のバージョンの Python をシステム全体で有効化する
システム全体で Python 3.11.7 を使用するには、以下のコマンドを実行します。
pyenv global 3.11.7
特定のディレクトリでのみ、あるバージョンの Python を使う方法
まずは特定のバージョンの Python を使いたいディレクトリにおります。
cd path/to/your/project
その後、以下のコマンドを実行するとそのディレクトリ内では指定した Python のバージョンが採用されます。
pyenv local 3.10.2
このコマンドにより、pyenv は .python-version というファイルを作成します。このディレクトリに入るたびに、pyenvがこのファイルを読み取って指定されたバージョンの Python がセットされるようになります。
シェル単位で特定のバージョンに切り替えたい場合
以下のコマンドを実行すると、シェル単位で Python バージョンを切り替えられます。
pyenv shell 3.10.2
この場合、シェルを閉じると Python のバージョン情報はリセットされます。
現在のディレクトリで採用されいているバージョンの調べ方
以下のコマンドを実行することで、現在のディレクトリで pyenv により採用されいてる Python バージョンを調べることができます。
pyenv version
上記のコマンドを実行すると、以下のバリエーションで値が返ってきます。
- 3.8.18 (set by /Users/username/.pyenv/version)
- 3.10.13 (set by /Users/username/.python-version)
それぞれ解説します。
グローバルで設定されたバージョンを採用している場合
グローバルで設定されている場合には、以下のような値が返ります。
3.8.18 (set by /Users/username/.pyenv/version)
ここで.pyenv/version
を指しているので、これはグローバルでセットした Python バージョンを採用しているということになります。
ローカルで設定されたバージョンを採用している場合
ローカルで独自に設定された Python バージョンを採用している場合には、以下のような値が返ります。
3.10.13 (set by /Users/username/.python-version)
ここで.python-versionというファイルを参照していることから、これはローカルでセットされた Python バージョンが採用されていることがわかります。
前述の通り、pyenv local では対象のディレクトリに .python-version ファイルを作成して、そこで バージョンの管理を行なっているからです。
ローカルの設定がされていなければ、そもそも .python-version ファイルは存在しません。
応用的な使い方
環境ごとの依存関係管理
pyenv には pyenv-virtualenv という拡張機能があります。
これはプロジェクトごとに異なる仮想環境を作成し、依存関係を隔離する機能です。
まずは、仮想環境の作成コマンドから。
pyenv virtualenv 3.8.18 venv
こちらは最初の一度だけ実行すれば OK です。
仮想環境に入るためには、以下のコマンドを実行します。
pyenv activate venv
仮想環境から抜けるためには、以下のコマンドです。
pyenv deactivate
本番環境での pyenv の使用
本番環境で pyenv を使うことは推奨されないようです。
理由は以下の通り。
- パフォーマンスの低下
- メンテナンスの複雑性
- 互換性の問題
上記は一例ですが、あまり良いことはなさそうです。
Docker などを活用することを検討した方が良さそうですね。
まとめ
以上のように、pyenv を使うとプロジェクトごとに異なる Python のバージョンを適用することができます。
Poetry との併用をしたい方は、以下の記事も併せて参照して見てください。
» 【Poetry使い方から仮想環境の削除まで】Python パッケージ管理の完全ガイド
コメント