はじめに
HOTCHPOTCH FESTIV@L!! 2も待ってます!1 nikkieです。
Pythonのpackage managerは、simple(=レゴブロック)なモジュールを組合せたいろいろな提案が存在します2。
その中で最近気になるHatchについての覚書です。
「これから試していくぞ!」というレベル感です。
目次
5月のPython Monthly TopicsはHatch
Hatchの全体感を掴むのにうってつけな記事だと思います。
- Hatchでプロジェクト作成
- 追加のインストール不要で、Ruffでフォーマット、pytestでテスト実行
- Pythonインタプリタを管理できる(マイナーバージョン違いを各種取り揃えられる)
- 仮想環境の管理
- 例としてdocs環境にSphinxをインストールした
同様にHatchが気になっている福田さんが踏み出す道を拓いてくださったと見えています。
ありがたい限りです。
登壇をきっかけに出会ったHatch
2024年4月にみんなのPython勉強会で、Pythonの仮想環境の話をしました。
pipによる仮想環境の管理は伸びしろを感じることがあり、それを解消する種々のツールの1つとしてHatchを紹介しています。
発表スライドは https://ftnext.github.io/2024-slides/stapy-april/python-virtual-environment-basic.html#/17 からです。
Hatchのインストールはインストーラやpipx。
インストーラがあるのはすごいと思っていて、「Pythonで書かれているのにPythonがなくてもインストールできるってどんな魔法!?」と思います(この点、私が誤解している可能性はあります)
プロジェクト作成はhatch new
ですし、すでにあるプロジェクトにHatchを入れるにはhatch new --init
とのこと。
ref: https://hatch.pypa.io/latest/intro/#setup
発表時に手を動かしたコードはこちら
仮想環境の依存ライブラリ管理が面白い
Hatchは、依存ライブラリを仮想環境で管理する方法がかなり特徴的だと思っています。
その方法とは、pyproject.toml
を書きます。
項目はproject
のdependencies
です3。
https://hatch.pypa.io/latest/environment/#dependencies
Hatch ensures that environments are always compatible with the currently defined project dependencies (if installed and in dev mode) and environment dependencies.
Hatch以外のツール、例えばpip
やrye
4は、開発者が依存をインストールする手順がありますよね。
pip install -r requirements.txt
rye sync
5
Hatchにこの種の手順はないと思われます(あるかもしれないですが、私はまだ出会えていません)。
hatch shell
やhatch run
は、pyproject.toml
に宣言した通りの仮想環境が用意されるんです!
Python Monthly Topicsでは、Sphinxの入ったdocs環境の例があります。
この体験、Rust(Cargo)の開発に近いなと思いました。
Cargo.toml
にdependenciesを書いたら、それがインストールされた状態で開発できるという経験をしました。
私は素のpip
を結構使ってきていて、依存ライブラリってツールで都度入れるものと身体に染み付いているのですが、Hatchのこの体験は新鮮でした。
そして、HatchやCargoの流儀の方が体験がよいように感じます(インストールできていると人が誤って思い込んでしまうためにつまづくことが激減しそう)
終わりに
気になるツール、Hatchについて、少しだけ手を動かしたり、記事を読んだりして、現時点で知っていることを書き出しました。
依存管理に注目すると、pyproject.toml
に宣言したとおりに仮想環境が作られるというのは、なかなか優秀そうな印象です。
今回は依存管理を中心に取り上げましたが、パッケージの公開やスクリプトの実行など、私が普段いろんなツールを組合せて行っている開発フローをHatchに移行できそうな印象を持ちました。
次はPythonプロジェクトに入れてみるフェーズかなと思います。
- hotchpotchはごった煮。ALLSTARS & MILLIONSTARS!! ↩
- ご参考。ばんくしさんのアウトプットにより私の理解は大きく引き上げられています ↩
-
pyproject.toml
の項目について ↩ -
かなり期待されているツールと見ていますが、こんな意見もあります(私の意見は廊下でお話ししましょう)
↩PyCoder's Weeklyより、Trying out Ryehttps://t.co/S7xhvXSmoR
— nikkie / にっきー 技書博 け-04 Python型ヒント本 (@ftnext) 2024年4月13日
結論:動作するPython開発環境があるなら、今Ryeを試す価値はないかも。新参者が健全なPython開発環境を簡単に用意できるのが価値
筆者はRyeのアイデアに同意しつつも、staticビルドPythonオンリーなためにC拡張コンパイルの課題を指摘 - 素振りの記:Ryeに慣れるために、Pythonで自分だけのクソライブラリを作る - nikkie-ftnextの日記をどうぞ↩