pyenv

バージョン管理Python開発環境CLIUNIX系ツール

GitHub概要

pyenv/pyenv

Simple Python version management

スター42,652
ウォッチ392
フォーク3,193
作成日:2012年8月31日
言語:Roff
ライセンス:MIT License

トピックス

pythonshell

スター履歴

pyenv/pyenv Star History
データ取得日時: 2025/7/20 02:54

言語バージョン管理ツール

pyenv

概要

pyenvは、Pythonの複数バージョンを簡単に管理できるコマンドラインツールです。プロジェクトごとに異なるPythonバージョンを使用でき、グローバル環境を汚染することなく開発環境を構築できます。純粋なシェルスクリプトで実装されており、Python自体のブートストラップ問題がありません。

詳細

主な特徴

  • バージョン切り替え: グローバル、ローカル、シェルレベルでPythonバージョンを管理
  • 複数バージョン共存: 異なるPythonバージョンを同時にインストール・管理
  • プロジェクト別管理: .python-versionファイルによる自動バージョン切り替え
  • 環境変数管理: PYENV_VERSIONによる一時的なバージョン指定
  • シェルスクリプト実装: 軽量で依存関係が少ない
  • プラグインシステム: pyenv-virtualenvなどの拡張機能

動作原理

pyenvはPATH環境変数の先頭にshimディレクトリを追加し、Pythonコマンドをインターセプトします。これにより、適切なPythonバージョンへのリダイレクトが可能になります。

サポートOS

  • Linux: すべての主要ディストリビューション
  • macOS: Homebrew経由でのインストール可能
  • Windows: WSL(Windows Subsystem for Linux)内でのみ動作
  • その他: FreeBSD、OpenBSDなどのUNIX系OS

メリット・デメリット

メリット

  • シンプルな設計: UNIXの哲学に従った単一目的ツール
  • 軽量: シェルスクリプトベースで高速動作
  • 柔軟性: グローバル、ローカル、シェルレベルでの管理
  • プロジェクト分離: プロジェクトごとの独立した環境
  • 豊富なバージョン: CPython、PyPy、Anacondaなど幅広くサポート
  • アクティブな開発: 継続的なメンテナンスとコミュニティサポート

デメリット

  • ビルド依存: Pythonをソースからビルドするため時間がかかる
  • Windows非対応: ネイティブWindowsでは動作しない
  • 初期設定: シェル設定ファイルの編集が必要
  • ビルドツール必要: コンパイラやライブラリのインストールが前提
  • 仮想環境は別途: pyenv-virtualenvプラグインが必要

参考ページ

書き方の例

インストール(Linux/macOS)

# 自動インストーラーを使用
curl https://pyenv.run | bash

# または手動でGitクローン
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# macOSではHomebrewも使用可能
brew install pyenv

シェル設定(.bashrcまたは.zshrcに追加)

# pyenv環境変数の設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

# pyenvの初期化
eval "$(pyenv init -)"

# 設定を反映
source ~/.bashrc  # または source ~/.zshrc

ビルド依存関係のインストール

# Ubuntu/Debian
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 \
xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# CentOS/RHEL/Fedora
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel libffi-devel

# macOS (Xcodeコマンドラインツールが必要)
xcode-select --install

基本的な使い方

# 利用可能なPythonバージョンの一覧表示
pyenv install --list

# 特定バージョンのインストール
pyenv install 3.12.0
pyenv install 3.11.7
pyenv install pypy3.10-7.3.13

# インストール済みバージョンの確認
pyenv versions

# グローバルバージョンの設定
pyenv global 3.12.0

# 現在のバージョン確認
pyenv version
python --version

プロジェクトごとの管理

# プロジェクトディレクトリに移動
cd /path/to/my-project

# このプロジェクト用のPythonバージョンを設定
pyenv local 3.11.7

# .python-versionファイルが作成される
cat .python-version
# 3.11.7

# 別のディレクトリに移動すると自動的に切り替わる
cd /path/to/another-project
pyenv local 3.10.13
python --version  # Python 3.10.13

一時的なバージョン切り替え

# 現在のシェルセッションのみでバージョンを変更
pyenv shell 3.9.18

# 環境変数での指定も可能
export PYENV_VERSION=3.9.18

# 元に戻す
pyenv shell --unset
# または
unset PYENV_VERSION

pyenv-virtualenvとの連携

# プラグインのインストール
git clone https://github.com/pyenv/pyenv-virtualenv.git \
  $(pyenv root)/plugins/pyenv-virtualenv

# シェル設定に追加
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

# 仮想環境の作成
pyenv virtualenv 3.12.0 myproject-env

# 仮想環境の有効化
pyenv activate myproject-env

# プロジェクトディレクトリで自動有効化
cd /path/to/myproject
pyenv local myproject-env