🥚

hatch を使った python の開発 workflow

2024/03/21に公開

この記事では、 python のプロジェクト管理ツール hatch を使った実際の開発における workflow を紹介する。
hatch とは何か、hatch の基本的な使い方は説明をしない。

Hatch を使った python のバージョン管理

hatch では python のディストリビューションをインストールすることができる。

hatch python install <pythonのバージョン>

からインストールをすることができる。

hatch python install 3.11

などのメジャーリリースを指定することができる
注意点としてここでは .zshrc 等にこの path を追加する設定を追加してしまう。
これを防ぐためには --private オプションを付与する。

hatch python isntall --private 3.11

Hatch にどの python を使用させるかを指定する

hatch env create などの venv 作成コマンドはとても便利だが、せっかく hatch でインストールした python のディストリビューションがあるのにそれを使わなかったらもったいない。
venv を作成するにあたって、どの python のバージョンを使うか指定する方法は存在する。
HATCH_PYTHON の環境変数を指定することによって、 hatch がデフォルトで使用する python のパスを設定することができる。

export HATCH_PYTHON=/path/to/python
hatch env create # /path/to/python が使用され virtualenv が作成される

いちいちフルパスを指定することは面倒くさいので hatch python find を使ってこう書ける

HATCH_PYTHON="$(hatch python find 3.10)" hatch env create

Hatch と direnv

hatch shell を用いると適切に virtualenv を立ち上げてくれる、しかしながら新しいシェルを立ち上げてしまうために。 .envrc にこれを直接記述をしてしまうと適切に direnv が処理をできない。
よって、 hatch shell ではなく直接 virtualenv を読み込まなければならない。
これを解決するには hatch env find を用いてそのディレクトリ(プロジェクト)に紐づいた path を取得することで実現できる。

#!/bin/bash

source "$(hatch env find)/bin/activate"
GitHubで編集を提案

Discussion