Traffine I/O

日本語

2023-03-31

PyenvによるPythonバージョン管理

Pyenvとは

Pyenvは、プロジェクトごとに異なるPythonバージョンを簡単にインストール・切り替えできるオープンソースのPythonバージョン管理ツールです。Pyenvはシンプルで堅牢なコマンドラインインタフェースを提供し、virtualenvvenvなどの仮想環境ツールとの統合もサポートしています。

Pyenvを使うことで、複数のPythonバージョンを簡単に管理し、独立した開発環境を作成し、プロジェクトが正しいPythonインタープリターで実行されるように保証できます。Pyenvを使いこなすことで、開発フローを効率化し、協力を改善し、Pythonプロジェクトをより信頼性が高く保守性の高いものにすることができます。

Pyenvの使い方

インストール

Pyenvを使用する前に、システムにインストールする必要があります。インストールプロセスは、オペレーティングシステムによって異なります。

  • macOS
    次のコマンドを使用して、Homebrewを使用してPyenvをインストールできます。
bash
$ brew install pyenv
  • Ubuntu/Linux
    Pyenvインストーラースクリプトを使用してツールをインストールします。
bash
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  • Windows
    Pyenvは公式にはWindowsに対応していません。ただし、同様の機能を提供するpyenv-winフォークを使用できます。次のコマンドを使用して、pyenv-winをインストールします。
bash
$ pip install pyenv-win --target %USERPROFILE%\\.pyenv

Pyenvをインストールした後、シェルの起動スクリプト(例えば、.bashrc.zshrc、または.bash_profile)に追加する必要があります。次の行をシェルの設定ファイルに追加します。

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

シェルを再起動すると、pyenvコマンドを使用できるようになります。

基本的なコマンド

以下は、Pyenvを使い始めるための必須コマンドです。

  • pyenv install -l
    インストールできる全てのPythonバージョンを一覧表示します。

  • pyenv global <version>
    システムのグローバルなPythonバージョンを設定します。

  • pyenv local <version>
    現在のディレクトリのローカルなPythonバージョンを設定します。

  • pyenv shell <version>
    現在のシェルセッションのPythonバージョンを設定します。

  • pyenv uninstall <version>
    特定のPythonバージョンをアンインストールします。

仮想環境との統合

仮想環境は、Python開発の重要な要素であり、プロジェクトごとに独立した環境を作成することで、依存関係やPythonバージョンが干渉しないようにすることができます。Pyenvは、virtualenvvenvなどの仮想環境ツールと組み合わせて使用できます。

次のコマンドを使用して、使用するPythonバージョンで新しい仮想環境を作成できます。

bash
$ python -m venv <env_name>

<env_name>には、仮想環境に付けたい名前を指定してください。

仮想環境をアクティブにするには、次のコマンドを実行します。

  • macOS/Linux: source <env_name>/bin/activate
  • Windows: <env_name>\Scripts\activate

仮想環境がアクティブになると、指定したPythonバージョンでパッケージをインストールし、Pythonプロジェクトを実行できます。仮想環境を無効にするには、単にdeactivateコマンドを実行します。

bash
$ deactivate

Pythonバージョンの管理

複数のPythonバージョンをインストール

特定のPythonバージョンをPyenvを使用してインストールするには、次のコマンドを使用します。

bash
$ pyenv install <version>

<version>を使用したいPythonバージョン番号に置き換えます(例:3.9.6)。使用可能なPythonバージョンのリストは、pyenv install -lを実行して確認できます。インストールが完了すると、Pyenvで新しいPythonバージョンを使用できるようになります。

Pythonバージョンの切り替え

Pyenvを使用すると、インストールされているPythonバージョンを簡単に切り替えできます。Pythonバージョンを設定するために、3つの主要なスコープがあります:グローバル、ローカル、およびシェルスコープ。

グローバル

グローバルPythonバージョンは、システムのデフォルトとして使用されます。グローバルバージョンを設定するには、次のコマンドを使用します。

bash
$ pyenv global <version>

<version>を使用したいPythonバージョン番号に置き換えてください。

ローカル

ローカルPythonバージョンは、ディレクトリごとに設定されます。そのディレクトリ内にいる場合、グローバルバージョンより優先されます。ローカルバージョンを設定するには、プロジェクトディレクトリに移動して、次のコマンドを実行します。

bash
$ pyenv local <version>

<version>を使用したいPythonバージョン番号に置き換えてください。これにより、現在のディレクトリに.python-versionファイルが作成され、PyenvはローカルPythonバージョンを決定するために使用します。

シェル

シェルPythonバージョンは、シェルセッションごとに設定されます。グローバルおよびローカルバージョンよりも優先されます。シェルバージョンを設定するには、次のコマンドを実行します。

bash
$ pyenv shell <version>

<version>を使用したいPythonバージョン番号に置き換えてください。シェルバージョンは、現在のシェルセッションでのみ有効です。

システムおよびユーザーPythonバージョンの設定

グローバルおよびローカルスコープを使用して、システム全体およびユーザー固有のPythonバージョンを設定できます。

  • システム全体
    システム全体のPythonバージョンを設定するには、前述のセクションで説明したように、pyenv globalコマンドを使用します。

  • ユーザー固有
    ユーザー固有のPythonバージョンを設定するには、ユーザーのホームディレクトリに移動して、pyenv localコマンドを使用します。これにより、ユーザーのホームディレクトリに.python-versionファイルが作成され、Pyenvはユーザー固有のPythonバージョンを決定するために使用します。

グローバル、ローカル、およびシェルスコープの理解

Pyenvを使用する際にグローバル、ローカル、およびシェルスコープの優先度を理解することが重要です。優先度の順序は以下のとおりです。

  • シェルスコープ
    シェルバージョンが設定されている場合、他のスコープよりも優先されます。

  • ローカルスコープ
    ローカルバージョンが設定されていて、シェルバージョンが設定されていない場合、ローカルバージョンが使用されます。

  • グローバルスコープ
    シェルおよびローカルバージョンが設定されていない場合、グローバルバージョンが使用されます。

これらの異なるスコープを使用することで、プロジェクトごと、ユーザーごと、またはシステム全体にPythonバージョンを簡単に管理でき、プロジェクトが正しいPythonインタプリタを使用し、異なるバージョンの要件を持つプロジェクト間の競合を回避できます。

参考

https://realpython.com/intro-to-pyenv/
https://github.com/pyenv/pyenv
https://fathomtech.io/blog/python-environments-with-pyenv-and-vitualenv/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!