環境の管理
環境の管理 #
Poetryは、プロジェクト環境の隔離を中核機能の1つとしています。
これは、グローバルPythonインストールから隔離されて常に動作することを意味します。これを達成するために、Poetryは最初に現在仮想環境内で実行されているかどうかを確認します。もしそうであれば、新しい環境を作成せずに直接使用します。そうでない場合は、既に作成されている環境を使用するか、新しい環境を作成します。
デフォルトでは、PoetryはPoetryのインストール中に使用されたPythonバージョンを使用して、現在のプロジェクトの仮想環境を作成しようとします。
ただし、さまざまな理由により、このPythonバージョンはプロジェクトでサポートされている`python`の範囲と互換性がない場合があります。この場合、Poetryは互換性のあるバージョンを見つけて使用しようとします。それができない場合は、明示的にアクティブ化するように求められます。環境の切り替えを参照してください。
pyenvのようなツールを使用して異なるPythonバージョンを管理している場合、実験的な`virtualenvs.prefer-active-python`オプションを`true`に設定できます。Poetryはシェルの現在の`python`を見つけようとします。
たとえば、プロジェクトでシステムで使用可能なPythonよりも新しいPythonが必要な場合、標準的なワークフローは次のようになります。
pyenv install 3.9.8
pyenv local 3.9.8 # Activate Python 3.9 for the current project
poetry install
環境の切り替え #
場合によっては、これはシステムにとって実現不可能な場合があります。特に`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
明示的にアクティブ化された仮想環境を無効にしたい場合は、特別な`system` Pythonバージョンを使用してデフォルトの動作を取り戻すことができます。
poetry env use system
環境情報の表示 #
現在アクティブになっている仮想環境に関する基本的な情報を取得するには、`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
プロジェクトに関連付けられている環境の一覧表示 #
`env list`コマンドを使用して、現在のプロジェクトに関連付けられているすべての仮想環境を一覧表示することもできます。
poetry env list
これを実行すると、次のような出力が得られます。
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)
環境へのフルパスを表示するには、オプション`--full-path`を渡すことができます。
poetry env list --full-path
環境の削除 #
最後に、`env remove`を使用して既存の仮想環境を削除できます。 p>
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
現在アクティブになっている仮想環境を削除すると、自動的に非アクティブ化されます。