背景
pyenv+poetry環境の新規プロジェクト立ち上げ手順を毎回調べては忘れてしまうので、備忘に記載
前提
- pyenv+poetry環境がすでに立っている
- 新しくpython3.11系が使える仮想環境を立てたい
手順
- pyenvの設定
-
欲しいバージョンのPythonが使えるか確認
$ pyenv versions system * 3.8.13 (set by /home/username/.pyenv/version)
-
残念ながら3.11系のpythonが入っていなかったためインストール
$ pyenv install 3.11
-
local(=このプロジェクトフォルダ)のpythonバージョンを3.11に設定
$ pyenv local 3.11
-
確認してみるとpythonのバージョンが変わっている
$ pyenv versions system 3.8.13 3.11.1 * 3.11.2 (set by /path/to/project_folder/.python-version)
-
- poetryの設定
- projectの初期化→pyproject.tomlが作成されていればOK
$ poetry init
- プロジェクトフォルダ内で仮想環境を作る(=プロジェクトのディレクトリに
/.venv
を作成)$ poetry config virtualenvs.in-project true --local
- poetryが使うpythonのバージョンを指定
$ poetry env use 3.11
- パッケージの初期インストール
$ poetry install
- 仮想環境のactivate
$ poetry shell
- projectの初期化→pyproject.tomlが作成されていればOK
デバッグ例
-
poetry env use
で以下のようなエラーが出ることがある$ poetry env use 3.11 The specified Python version (3.11.6) is not supported by the project (3.11).
- こういう時は
pyproject.toml
の中のtool.poetry.independencies
内のpythonバージョン指定が厳しすぎることがある(以下例)[tool.poetry.dependencies] python = "3.11"
- これを少し緩めると良い
[tool.poetry.dependencies] python = "^3.11"
- こういう時は
-
poetry env use
でプロジェクトフォルダ内に仮想環境を作ってくれないことがある$ poetry env use 3.11 Using virtualenv: /Users/username/Library/Caches/pypoetry/virtualenvs/project-name-py3.xx
-
poetry config virtualenvs.in-project true --local
の設定をする前に仮想環境をactivateしてしまっている(=poetry shellしている)のが原因(poetryは仮想環境をデフォルトで~/Library/Caches/pypoetry/virtualenvs/
に仮想環境を作る) - 一度仮想環境を削除
$ poetry env list project-name-py3.xx (Activated) $ poetry env remove project-name-py3.xx Deleted virtualenv: /Users/username/Library/Caches/pypoetry/virtualenvs/project-name-py3.xx
- 仮想環境を作り直し
poetry env use 3.11
-