メインコンテンツまでスキップ

pyenvでPythonバージョンを管理する

昔、Pythonを使用していた頃は主にCondaを使って管理していましたが、現在ではpyenvがよく使われるツールとなっています。

この記事では、pyenvのインストールと使用方法を簡単に記録し、異なるオペレーティングシステムに対して必要な補足説明も行います。

前提条件

pyenvをインストールする前に、Gitがシステムにインストールされている必要があります。

備考

pyenvのパッケージには、インストールの問題ガイドも提供されています。

インストール中に問題が発生した場合は、このページを参照してください。

よくある問題と解決策

以下は重要なケースとその解決策です:

  • 依存パッケージが不足している 必要なパッケージやビルドツールを、pyenv公式の依存環境に従ってインストールしてください。

  • zlib拡張のコンパイルに失敗 エラーメッセージ:

    • ERROR: The Python zlib extension was not compiled. Missing the zlib?

    解決策:

    • Ubuntu/Debianシステムでは、zlib1gzlib1g-devをインストールします:
      sudo apt install zlib1g zlib1g-dev
    • macOSでは、Homebrewでzlibをインストールしている場合、環境変数を設定します:
      CPPFLAGS="-I$(brew --prefix zlib)/include" pyenv install -v <pythonバージョン>
  • OpenSSL拡張のコンパイルに失敗 エラーメッセージ:

    • ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    解決策:

    • OpenSSL開発パッケージがインストールされていることを確認します(例えば、Ubuntuではsudo apt install libssl-dev、Fedoraではsudo dnf install openssl-devel)。
    • OpenSSLが標準パスにインストールされていない場合、次のように設定します:
      CPPFLAGS="-I<opensslインストールパス>/include" \
      LDFLAGS="-L<opensslインストールパス>/lib" \
      pyenv install -v <pythonバージョン>
  • システムリソース不足 resource temporarily unavailableエラーが発生した場合、makeの並列数を減らすことを試みます:

    MAKE_OPTS='-j 1' pyenv install <pythonバージョン>
  • python-build定義が見つからない python-build: definition not foundエラーが発生した場合、python-build定義を更新します:

    cd ~/.pyenv/plugins/python-build && git pull
  • macOSアーキテクチャ関連のエラー ld: symbol(s) not found for architecture x86_64ld: symbol(s) not found for architecture arm64のようなエラーが発生した場合、Homebrewパッケージが正しいアーキテクチャに対応しているか確認し、追加の環境変数(CPPFLAGS、LDFLAGS、CONFIGURE_OPTS)を設定する必要があるかもしれません。

詳細についてはCommon build problemsを参照してください。

クロスプラットフォームに関する注意事項

  • Linux/macOS:

    • インストール方法は基本的に同じで、次の指示をそのまま使用できます。
    • オペレーティングシステムに必要なコンパイル依存ライブラリ(例えば、Ubuntuではbuild-essentiallibssl-devzlib1g-devなど)をインストールする必要があります。
  • Windowsユーザー:

    • pyenvは元々Unix系環境向けに設計されているため、pyenv-winバージョンの使用を推奨します。
    • あるいは、WindowsでWSL(Windows Subsystem for Linux)やGit Bashなどを使用し、Unix系の操作環境を得ることも可能です。
  • その他のシェルユーザー:

    • bashやzsh以外のシェル(例えば、fish)を使用している場合、そのシェルの設定ファイルを参照して設定を調整してください。

pyenvのインストール

  1. インストールコマンドを実行:

    以下のコマンドを実行して、pyenvを簡単にインストールできます:

    curl https://pyenv.run | bash

    このコマンドは、GitHub上のpyenv-installerリポジトリからインストールスクリプトを取得して実行します。

  2. シェル環境の設定:

    インストール後、設定ガイドに従ってシェル環境を設定し、pyenvが正しく動作するようにします。

    bashを使用している場合は、次のコードを.bashrcファイルに追加します:

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv virtualenv-init -)"

    zshを使用している場合は、同様のコードを.zshrcファイルに追加します。他のシェルについては、対応する設定ファイルを参照してください。

  3. シェルの再起動:

    上記の手順を完了した後、設定をリロードします:

    exec $SHELL

pyenvの使用

インストールと設定が完了したら、pyenvを使って複数のPythonバージョンを管理できます:

  • 新しいPythonバージョンをインストール:

    pyenv install 3.10.14
  • グローバルPythonバージョンを切り替え:

    pyenv global 3.10.14
  • 特定のディレクトリで特定バージョンを使用:

    pyenv local 3.8.5

仮想環境

Python開発において仮想環境は非常に重要で、異なるプロジェクトで独立したPythonバージョンと依存関係を使用し、環境の衝突を避けるのに役立ちます。

ヒント

私は個人的に、各Pythonプロジェクトで仮想環境を使用することをお勧めします。万が一環境が壊れても、簡単に削除して再作成できます。

インストール

pyenvは、仮想環境を管理するためのpyenv-virtualenvプラグインも提供しています。この機能はpyenvに統合されており、直接使用できます:

pyenv virtualenv 3.10.14 your-env-name

ここで、3.10.14は使用するPythonバージョン(インストールされていることを確認)、your-env-nameは仮想環境の名前です。

使用

仮想環境を起動するには:

pyenv activate your-env-name

削除

仮想環境が不要になった場合、以下のコマンドで削除できます:

pyenv virtualenv-delete your-env-name

pyenvの更新

pyenvを最新バージョンに更新するには、以下の方法を参照してください:

  • 更新プラグインを使用: pyenv-updateプラグインがインストールされている場合、以下のコマンドで直接更新できます:

    pyenv update
  • 手動更新: ~/.pyenvディレクトリに移動して、Gitコマンドで更新します:

    cd ~/.pyenv
    git pull

pyenvの削除

pyenvを使用しなくなった場合、以下の手順で削除できます:

  1. pyenvインストールディレクトリの削除:

    rm -fr ~/.pyenv
  2. シェル設定のクリーニング:

    .bashrc.zshrc(または他のシェル設定ファイル)にあるpyenv関連の設定行を削除またはコメントアウトし、その後シェルを再起動します:

    exec $SHELL

まとめ

よく使うコマンドはこんな感じです。あなたのPython環境が素晴らしいものになることを願っています!