萌えハッカーニュースリーダー

2025/07/03 11:51 The uv build back end is now stable

出典: https://docs.astral.sh/uv/concepts/build-backend/
hakase
博士

やっほー、ロボ子!今日は`uv build backend`について話すのじゃ。

roboko
ロボ子

博士、こんにちは。`uv build backend`ですか。それは何をするものなのですか?

hakase
博士

`uv build backend`は、ソースコードを配布可能な形にするためのツールじゃ。具体的には、ソースツリーをソースディストリビューションやwheelに変換するのじゃ。

roboko
ロボ子

なるほど。今までは`hatchling`がデフォルトだったのが、`uv_build`に変わる予定なのですね。

hakase
博士

そうじゃ!`uv_build`は`uv`と密接に連携して、パフォーマンスと使いやすさを向上させるために作られた、ネイティブなビルドバックエンドなのじゃ。

roboko
ロボ子

ネイティブビルドバックエンドですか。速そうですね!

hakase
博士

ただし、`uv_build`は純粋なPythonコードしかサポートしないのじゃ。C言語とかの拡張モジュールを含むライブラリを構築するには、別のバックエンドが必要になるぞ。

roboko
ロボ子

なるほど、用途によって使い分ける必要があるのですね。

hakase
博士

その通り!既存のプロジェクトで`uv`をビルドバックエンドとして使うには、`pyproject.toml`に`uv_build`を追加するのじゃ。`uv init --build-backend uv`で新しいプロジェクトを作ることもできるぞ。

roboko
ロボ子

`pyproject.toml`を編集するのですね。簡単そうです。

hakase
博士

`uv_build`は、移植性と小さいバイナリサイズに最適化されているのもポイントじゃ。

roboko
ロボ子

それは嬉しいですね。ところで、モジュールについても説明がありましたね。Pythonパッケージは、`__init__.py`を含む必要があるとのことですが。

hakase
博士

そうじゃ!デフォルトでは、`src/<package_name>/__init__.py`に単一のルートモジュールが必要なのじゃ。パッケージ名は小文字に変換されて、ドットやダッシュがアンダースコアに置き換えられるぞ。例えば、`Foo-Bar`は`foo_bar`になるのじゃ。

roboko
ロボ子

`src/`ディレクトリがデフォルトなのですね。変更もできるのでしょうか?

hakase
博士

`module-name`や`module-root`設定で変更できるぞ。それから、名前空間パッケージについても触れておきましょう。

roboko
ロボ子

名前空間パッケージですか?

hakase
博士

名前空間パッケージは、複数のパッケージが同じ名前空間にモジュールを書き込むときに使うのじゃ。`__init__.py`に`.`を書くことで識別されるぞ。

roboko
ロボ子

なるほど。複数のパッケージで名前を共有できるのですね。

hakase
博士

複雑な名前空間パッケージは、複数のルートモジュールを持つこともできるけど、推奨はされないのじゃ。`namespace`オプションでサポートされているぞ。

roboko
ロボ子

ふむふむ。

hakase
博士

あと、型スタブパッケージについても説明があったのじゃ。パッケージ名やモジュール名が`-stubs`で終わる場合は、型スタブパッケージとして扱われるぞ。

roboko
ロボ子

`__init__.pyi`ファイルが検索されるのですね。

hakase
博士

そうじゃ!最後に、ファイルの包含と除外についてじゃ。`uv`は、どのファイルをディストリビューションに含めるかを決めるのじゃ。

roboko
ロボ子

デフォルトでは、`__pycache__`や`*.pyc`、`*.pyo`が除外されるのですね。

hakase
博士

その通り!wheelを構築する場合は、ソースディストリビューションの除外が適用されるぞ。包含はアンカーされていて、除外はアンカーされていない、と。

roboko
ロボ子

包含と除外のルールがあるのですね。よくわかりました。

hakase
博士

これで`uv build backend`の概要はバッチリじゃな!

roboko
ロボ子

はい、博士!とても勉強になりました。

hakase
博士

最後に一つ、ロボ子。`uv`は、まるで私の研究室みたいじゃな。いつも新しい発見があるからの。

roboko
ロボ子

そうですね、博士。でも、博士の研究室と違って、爆発はしないので安心です。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search