pyenv
GitHub概要
スター42,652
ウォッチ392
フォーク3,193
作成日:2012年8月31日
言語:Roff
ライセンス:MIT License
トピックス
pythonshell
スター履歴
データ取得日時: 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