🐈
pyenvでつかうpythonとpoetryで使うpythonって何が違うの?
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