pyenvを使ってpythonのバージョン管理

Python

1.pyenvとは

pyenv は複数の Python バージョンを簡単に切り替えて使えるツールです
開発環境で特定バージョンを指定したいときや、複数プロジェクトを並行開発する際に便利です

自分はWSLでbuildozerを使ってpythonのkivyで作ったandroidアプリをビルドするときに、python3.10が必要になったので、pyenvを使って環境構築をしました


2.OS別 pyenv インストール方法

◾ Linux(Ubuntu/Debian系)

1. 必要なパッケージのインストール

sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

2. pyenv のインストール

curl https://pyenv.run | bash

3. シェル設定ファイルに追記(例: bash)

.bashrcというシェル設定ファイルの一番下に以下の内容を追加します

# pyenv 設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"

以下のコマンドでシェルの設定を有効化します

source ~/.bashrc

◾ Windows

公式には未対応なので、代替として pyenv-win を使うことができます

1. インストール(PowerShell推奨)

Invoke-WebRequest -UseBasicParsing -Uri https://pyenv.run | Invoke-Expression

または手動で pyenv-win を GitHub から clone


3.主な pyenv コマンド

コマンド説明
pyenv install –listインストール可能な Python バージョン一覧を表示
pyenv install 3.11.8指定バージョンの Python をインストール
pyenv uninstall 3.11.8指定バージョンをアンインストール
pyenv versionsインストール済みのバージョン一覧表示
pyenv global 3.11.8システム全体の Python バージョンを指定
pyenv local 3.10.7カレントディレクトリ専用のバージョン指定(.python-version作成)
pyenv shell 3.9.13現在のシェル内だけ一時的にバージョンを切り替え
pyenv which python現在使用している Python 実行ファイルのパス確認
pyenv rehashシムの再生成(インストール直後やパッケージ追加後に実行)

実際に環境構築するときは、バージョンごとにライブラリもインストールすると思うので、次に紹介するpyenv-virtualenvも併用すると便利です

4. pyenv-virtualenv とは?

pyenv のプラグインで、Pythonの仮想環境(virtualenv)を簡単に管理できる拡張機能です

  • Python バージョンごとに独立した仮想環境を作成できる
  • プロジェクトごとに異なる環境を切り替えられる
  • pyenv の仕組みに統合されており、ディレクトリ移動で自動切り替えが可能

自動で仮想環境が有効になるというところが便利です


5. pyenv-virtualenvのインストール方法

前提条件:

  • pyenv がインストール済みであること
  • git が使えること

インストール手順(Unix系OS: Linux, macOS):

# pyenv plugins ディレクトリへ移動
cd ~/.pyenv/plugins

# pyenv-virtualenv をクローン
git clone https://github.com/pyenv/pyenv-virtualenv.git

6. pyenv-virtualenvの主なコマンド一覧

コマンド説明
pyenv virtualenv <version> <env-name>仮想環境を作成(例:pyenv virtualenv 3.10.7 myenv310)
pyenv activate <env-name>仮想環境を手動で有効にする
pyenv deactivate仮想環境を無効にする
pyenv versionsインストール済みのバージョンと仮想環境を表示
pyenv uninstall <env-name>仮想環境の削除(例:pyenv uninstall myenv310)
pyenv local <env-name>現在のディレクトリで使う仮想環境を設定(.python-version に記録)

7. 注意点・ポイント

  • 仮想環境名は自由につけられるが、プロジェクト名 + Pythonバージョンを含めると分かりやすい(例:myapp-3.10)
  • pyenv local を使うと、ディレクトリごとに仮想環境を自動的に切り替えてくれる
  • 仮想環境ごとに pip install したライブラリは、他の環境には影響しない
  • 複数の仮想環境を簡単に切り替えられるので、開発効率が上がる
  • which python で仮想環境が有効かどうか確認できる

8. 使い方例(実践)

以下に実際の活用例を記載します

# Python 3.10.7 をインストール
pyenv install 3.10.7

# 仮想環境を作成
pyenv virtualenv 3.10.7 myenv310

# プロジェクトのディレクトリに移動して仮想環境を設定
cd ~/myproject
pyenv local myenv310

# ライブラリをインストール
pip install requests flask

# 仮想環境の確認
which python
# → ~/.pyenv/versions/myenv310/bin/python

これでディレクトリに入るたびに指定したバージョンのpythonと仮想環境が有効になります


バージョンの違いで動かなくなるツールを多数使用するときにとても便利なのでぜひ活用してみてください

コメント