やりたいこと
poetryで利用するPythonのバージョンを3.10
->3.11
にバージョンアップしたい!
前提
アップデートする開発環境は以下です。
-
Python
-
docker
を利用し特定バージョンのPythonを導入
-
-
poetry
-
container
上で導入 -
poetry config virtualenvs.in-project true
を設定し、プロジェクトディレクトリの中に.venv
として仮想環境を作成
-
アップデート手順
1. Dockerfile
のアップデート
FROM句を下記の通り変更します。
- FROM python:3.10
+ FROM python:3.11
2. poetry.toml
のアップデート
依存バージョンを下記の通り変更します。
[tool.poetry]
name = "sample"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
- python = "^3.10"
+ python = "^3.11"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
3. .venv
の削除
プロジェクトディレクトリ内に存在する .venv
ディレクトリをまるごと削除します。
sample
├── .venv <- このディレクトリを削除
├── main.py
├── poetry.lock
└── pyproject.toml
.venv
を削除しない場合 poetry
実行環境にバージョンアップ前(3.10
)の環境が利用されます
poetry update
など行う際、EnvCommandError
が発生するので注意してください!
-> pyproject.toml
と .venv
のバージョンが異なるのでエラーが出るのは当然...
4. poetry install
を行い、バージョンアップ後の .venv
を作成
プロジェクトディレクトリ直下に移動し、下記のコマンドを実施します。
poetry install
コマンドが一通り実行されると、下記のように 3.11
の環境が格納された .venv
ディレクトリが作成されます。
これでPython
のバージョンアップが完了しました!
終わりに
「Dockerfile
とpyproject.toml
だけ書き換えれば、すぐにアップデートできるだろう」とおもっていたら、割とハマってしまって時間を使ってしまいました。。。
poetry
で仮想実行環境が設定されていることを意識していなかった、自分の理解不足によるものだったな、と思いました。
便利なものほど仕組みをちゃんと理解していないと、めちゃくちゃ簡単なところでハマる教訓を得ることができました!
参考
-
Petry documentation
- 公式のドキュメントです(英語)
-
Poetry documentation (ver. 1.1.6 日本語訳)
- 公式ドキュメントの日本語訳版です。
- バージョンは少し古いですが、基本的なオプションなどは変わっていないのでめっちゃ便利です!