Poetryを使用してプロジェクトを管理していると、Pythonバージョンが意図しないもの(例えば、pyenv
で設定したグローバルバージョンとは異なるもの)で仮想環境が構築されることがあります。このような場合、仮想環境を再構築してPythonバージョンを変更する手順を解説します。
目次
なぜバージョンが異なるのか?
Poetryは仮想環境を作成する際に、現在の環境で有効なPythonバージョンを基にします。ただし、pyenv
やシステム設定に依存するため、グローバル設定が反映されない場合があります。
手順
1. 現在のPythonバージョンを確認する
まず、Poetryの仮想環境で使用されているPythonバージョンを確認します。
poetry env info
出力例:
Virtualenv
Python: 3.11.6
Implementation: CPython
Path: ~/.cache/pypoetry/virtualenvs/project-name-py3.11
Executable: ~/.cache/pypoetry/virtualenvs/project-name-py3.11/bin/python
2. 現在の仮想環境を削除する
Poetryが作成した仮想環境を削除します。これは新しいPythonバージョンで仮想環境を作り直すための準備です。
poetry env remove <現在の仮想環境のPythonバージョン>
例:
poetry env remove 3.11
3. 使用したいPythonバージョンを確認・設定する
pyenv
を使用している場合は、目的のPythonバージョンをグローバルまたはローカルに設定します。
グローバルに設定
pyenv global 3.12.5
ローカルに設定(特定のプロジェクトディレクトリでのみ有効)
pyenv local 3.12.5
設定を反映するため、rehash
を実行します。
pyenv rehash
exec $SHELL
現在のPythonバージョンを確認して、意図したバージョンが反映されているか確認します。
python --version
4. Poetryに新しいPythonバージョンを使用させる
Poetryに使用するPythonバージョンを指定します。
poetry env use 3.12
実行後、再び仮想環境の情報を確認して、新しいPythonバージョンが反映されていることを確認します。
poetry env info
出力例:
Virtualenv
Python: 3.12.5
Implementation: CPython
Path: ~/.cache/pypoetry/virtualenvs/project-name-py3.12
Executable: ~/.cache/pypoetry/virtualenvs/project-name-py3.12/bin/python
5. 依存関係を再インストールする
新しい仮想環境に依存関係をインストールします。
poetry install
注意点
pyenv
で使用するPythonバージョンを変更する際には、rehash
を忘れずに実行してください。- プロジェクトの
pyproject.toml
で指定されているPythonバージョン(例:^3.12
)が一致しているかも確認してください。
これでPoetryの仮想環境でPythonバージョンを変更する手順は完了です。環境に応じて柔軟に適用してください!