Skip to content

Environments


Environmentsは、テスト、ドキュメントの構築、またはその他のプロジェクトに必要なもののための分離されたワークスペースを可能にするように設計されています。

環境がchosen explicitlyされていない限り、Hatchはデフォルトの環境を使用します。

Tip

より包括的なウォークスルーについては、Basic usageチュートリアルを参照してください。

Creation

環境を作成するには、env createコマンドを使用します。[setup phase]で作成したプロジェクトのディレクトリ(intro.md#new-project)を入力します。:

$ hatch env create
Creating environment: default
Installing project in development mode
Syncing dependencies

Tip

シェル内のspawning a shellまたはrunning commandsが自動的に作成をトリガーするため、環境を手動で作成する必要はありません。

Entering environments

環境内でshellを生成するには、shellコマンドを使用します。

$ hatch shell
(hatch-demo) $

次に、プロジェクトがインストールされたことを確認します。:

(hatch-demo) $ pip show hatch-demo
Name: hatch-demo
Version: 0.0.1
...

最後に、環境のPythonがどこにあるかを確認しますlocated。:

(hatch-demo) $ python -c "import sys;print(sys.executable)"
...

環境を終了するには、exitと入力します。

Command execution

runコマンドを使用すると、すでに入力したかのように環境でコマンドを実行できます。たとえば、次のコマンドを実行すると、以前と同じパスが出力されます。:

hatch run python -c "import sys;print(sys.executable)"

Tip

プロジェクトのscriptsを定義する方法を必ず確認してください。

Dependencies

Hatchは、環境が現在定義されているproject dependencies(installedおよびdev mode)およびenvironment dependenciesと常に互換性があることを確認します。

cowsayを依存関係として追加するには、pyproject.tomlを開いて、dependencies配列に追加します。:

[project]
...
dependencies = [
  "cowsay"
]

この依存関係は、次にspawn a shellまたはrun a commandを実行したときにインストールされます。例:

$ hatch run cowsay -t "Hello, world!"
Syncing dependencies
  _____________
| Hello, world! |
  =============
             \
              \
                ^__^
                (oo)\_______
                (__)\       )\/\
                    ||----w |
                    ||     ||

Note

依存関係の同期中ステータスは、依存関係の変更に応じてHatchが環境を更新するときに一時的に表示されます。

Selection

コマンドを入力または実行する環境を選択するには、-e/--env root optionを使用するか、HATCH_ENV環境変数を設定します。

runコマンドを使用すると、コマンドの前に<ENV_NAME>:を付けることで、より明確な選択が可能になります。たとえば、次のように設定したとします。:

[tool.hatch.envs.docs]
dependencies = [
  "mkdocs"
]
[tool.hatch.envs.docs.scripts]
build = "mkdocs build --clean --strict"
serve = "mkdocs serve --dev-addr localhost:8000"
[envs.docs]
dependencies = [
  "mkdocs"
]
[envs.docs.scripts]
build = "mkdocs build --clean --strict"
serve = "mkdocs serve --dev-addr localhost:8000"

次のコマンドを実行して、ドキュメントを提供できます。:

hatch run docs:serve

Tip

環境を既にenteredしている場合、コマンドはデフォルトでその環境をターゲットにします。

Matrix

Every environment can defin/e its own set of matrices:

すべての環境は、独自のmatricesのセットを定義できます。:

[tool.hatch.envs.test]
dependencies = [
  "pytest"
]

[[tool.hatch.envs.test.matrix]]
python = ["3.10", "3.11"]
version = ["42", "3.14"]

[[tool.hatch.envs.test.matrix]]
python = ["3.11", "3.12"]
version = ["9000"]
feature = ["foo", "bar"]
[envs.test]
dependencies = [
  "pytest"
]

[[envs.test.matrix]]
python = ["3.10", "3.11"]
version = ["42", "3.14"]

[[envs.test.matrix]]
python = ["3.11", "3.12"]
version = ["9000"]
feature = ["foo", "bar"]

env showコマンドを使用すると、次のように表示されます。:

$ hatch env show --ascii
     Standalone
+---------+---------+
| Name    | Type    |
+=========+=========+
| default | virtual |
+---------+---------+
                        Matrices
+------+---------+----------------------+--------------+
| Name | Type    | Envs                 | Dependencies |
+======+=========+======================+==============+
| test | virtual | test.py3.10-42       | pytest       |
|      |         | test.py3.10-3.14     |              |
|      |         | test.py3.11-42       |              |
|      |         | test.py3.11-3.14     |              |
|      |         | test.py3.11-9000-foo |              |
|      |         | test.py3.11-9000-bar |              |
|      |         | test.py3.12-9000-foo |              |
|      |         | test.py3.12-9000-bar |              |
+------+---------+----------------------+--------------+

Removal

単一の環境または環境マトリックスを削除するには、env removeコマンドを使用します。プロジェクトのすべての環境を削除するには、env pruneコマンドを使用します。