Managing environments
Poetryは、プロジェクト環境の分離をそのコア機能の1つにしています。
これが意味するのは、グローバルなPythonインストールからは常に分離されて動作するということです。 これを実現するために、まず現在仮想環境内で実行されているかどうかをチェックします。 有効な場合は、新しいファイルを作成せずに直接使用します。 ただし、そうでない場合は、すでに作成されているものを使用するか、まったく新しいものを作成します。
デフォルトでは、PoetryはPoetryのインストール時に使用されたPythonバージョンを使用して、現在のプロジェクトの仮想環境を作成しようとします。
ただし、さまざまな理由から、このPythonバージョンはプロジェクトでサポートされているpythonの範囲と互換性がない可能性があります。
この場合、Poetryはそれを見つけて使用しようとします。
有効にできない場合は、Switching environmentsを参照して、明示的に有効にするように求められます。
Note
pyenvのようなツールを使って異なるPythonバージョンを管理する場合は、実験的なvirtualenvs.prefer-active-pythonオプションをtrueに設定することができます。
そしてPoetryはシェルの現在のpythonを見つけようとします。
たとえば、システムで使用可能なものよりも新しいPythonがプロジェクトで必要な場合、標準のワークフローは次のようになります。
pyenv install 3.9.8
pyenv local 3.9.8 # Activate Python 3.9 for the current project
poetry install
Note
バージョン1.2以降、PoetryはPython 2.7の環境管理をサポートしなくなりました。
Switching between environments
あなたのシステム、特にpyenvが利用できないWindowsでは、これが実現できない場合もありますし、単に環境をより明確に制御したい場合もあります。
この特定の目的のために、env useコマンドを使用して、現在のプロジェクトに使用するPythonバージョンをPoetryに指示することができます。
poetry env use /full/path/to/python
PATHにpython実行可能ファイルがあれば、それを使うことができます。
poetry env use python3.7
この場合は、マイナーバージョンのPythonを使用することもできます。
poetry env use 3.7
明示的にアクティブ化された仮想環境を無効にしたい場合は、特別なsystemPythonバージョンを使用してデフォルトの動作を取得できます。
poetry env use system
Displaying the environment information
現在アクティブになっている仮想環境に関する基本的な情報を取得するには、env infoコマンドを使用します。
poetry env info
次のように出力します。
Virtualenv
Python: 3.7.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid: True
Base
Platform: darwin
OS: posix
Python: /path/to/main/python
仮想環境へのパスだけを知りたい場合は、--pathオプションをenv infoに渡すことができます。
poetry env info --path
python実行可能ファイルへのパスだけを知りたい場合は(mypyを仮想環境にインストールせずにグローバル環境から実行する場合に便利です)、--executableオプションをenv infoに渡すことができます。
poetry env info --executable
Listing the environments associated with the project
env listコマンドを使用して、現在のプロジェクトに関連付けられているすべての仮想環境を一覧表示することもできます。
poetry env list
次のように出力されます。
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)
--full-pathオプションを渡すと、環境へのフルパスを表示できます。
poetry env list --full-path
Deleting the environments
最後に、env removeを使って既存の仮想環境を削除することもできます。
poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7
一度に複数の環境を削除できます。
poetry env remove python3.6 python3.7 python3.8
一度にすべての仮想環境を削除するには、--allオプションを使用します。
poetry env remove --all
現在アクティブになっている仮想環境を削除すると、自動的に非アクティブになります。