🐈

pyenvでつかうpythonとpoetryで使うpythonって何が違うの?

2025/02/18に公開

TL;DR

pyenv local 3.12
poetry env use $(pyenv which python)
  • pyenv localは、システム上にインストールされた複数のPythonバージョンの中から、ディレクトリ単位で利用するバージョンを指定するツールである。
  • poetry env useは、指定されたPythonインタプリタを用いて、プロジェクト専用の仮想環境を作成するためのコマンドである。

違い

pyenv local

  • 役割: ディレクトリ単位で使用する Python のバージョンを指定する
  • 動作:
    • カレントディレクトリに .python-version ファイルを作成し、そこで指定したバージョンがそのディレクトリ内で自動的に使用される。
    • システム全体にインストールされた複数の Python バージョンの中から、どれを使うかを決めるためのツール。

poetry env use

  • 役割: Poetry プロジェクトで使う仮想環境を、指定した Python インタプリタで構築する
  • 動作:
    • 指定した Python インタプリタを利用して、そのプロジェクト専用の仮想環境を作成します。
    • すでに pyenv で管理している Python を指定することもできるので、たとえば poetry env use $(pyenv which python) として、pyenv local で選んだバージョンを利用することが可能。

両者は直接競合するものではなく、むしろ補完的な役割を果たす。まずpyenv localによりプロジェクト全体のPythonバージョンを決定し、そのバージョンを利用してpoetry env useで仮想環境を構築するのが一般的な使い方である。

Discussion