テクノロジー · 実用ガイド
Poetry が別の Python を使う?環境を作り直す前に実行系を証明する
シェル、Poetry のプロジェクト環境、実行時の sys.executable・prefix・base_prefix を比較し、制約と設定範囲を確認してから最小の修正を選びます。

プロンプトが正しく見えても、Poetry はキャッシュ済み環境、既に有効な環境、または Poetry を導入した Python を選ぶことがあります。各層のパスを証明し、誤っている層だけを変更します。
変更前に不一致を記録する
最初から .venv を削除しません。シェルが解決する Python、Poetry の環境パスと実行系、poetry run 内の sys.executable・sys.prefix・sys.base_prefix を記録します。差があれば、シェル、Poetry の関連付け、起動プロセスのどこに問題があるか絞れます。
3つのパスを別々の証拠として読む
シェルの python は PATH の結果、poetry env info --executable はプロジェクトに関連付けられた実行系、sys.executable は実際に起動したプログラムです。prefix と base_prefix で仮想環境と基底実行系を確認します。VIRTUAL_ENV は補助情報にすぎません。
先にプロジェクト制約を確認する
requires-python または Poetry の Python 制約と候補の正確な版を比較します。Poetry が必要な Python をすべて自動導入するわけではありません。互換性を確認後、フルパスまたは poetry env use 3.12 で選びます。候補がなければ通常の管理手段で先に用意します。
設定範囲と既存環境を監査する
poetry config --list と virtualenvs.create、in-project、path、use-poetry-python、CI の環境変数を確認します。キャッシュ環境が既にある場合、in-project を有効にしても自動で .venv へ移りません。削除前に旧パスを記録します。
証拠に合う最小修正を選ぶ
シェルだけが誤るなら PATH や版管理を直します。Poetry が別環境に結び付くなら検証済み実行系で env use を行います。外部環境を意図的に有効化している場合、Poetry は別環境を作りません。CI は PATH、有効環境、設定変数、poetry run の出力をローカルと比較します。
修正を再検証して戻せるようにする
同じコマンドを繰り返し、Poetry の実行系と poetry run の sys.executable が目的環境を示すことを確認します。sys.prefix は環境、sys.base_prefix は基底実行系を示すべきです。最小の失敗コマンド、poetry check、テストを実行し、変更前後を保存します。
