2024年09月27日(金) [長年日記]
■ [python] 作成するWheelファイルのファイル名
昨日の例で作られるWheelファイルのファイル名は
- oreore-0.1.0-py3-none-any.whl
になる。これの「py3-none-any」の部分はPlatform compatibility tagsと呼ばれ、
- python tag
- abi tag
- platform tag
を並べたものになっている。
Wheelが特定のPythonバージョンや特定のプラットフォームを要求する場合、これらのタグを適切に指定する必要があるが、作成するファイル名を制御するにはどうすればいいのか?
方法1: buildの--config--settingオプションを使用する
昨日の例ではWheelの作成にpipを使用したが、pipでファイル名を制御する方法はわからなかった。buildを使えばある程度制御できて、昨日の環境で次のコマンド
$ python -m build . --wheel \ --config-setting="--build-option=--python-tag hello --plat-name world"
を実行すると
- oreore-0.1.0-hello-none-world.whl
というファイル名のWheelが作られる。
abi tagを指定する方法は分からなかった。また、確認したビルドバックエンドはSetuptoolsだけで、別のバックエンドを使う場合は別の指定方法になると思われる。
方法2: wheel tagsコマンドでファイル名を変更する
wheelというパッケージがあり、これをインストールするとwheel tagsというコマンドを使えるようになって、これでWheelのファイル名の変更が簡単にできる。
$ python -m wheel tags oreore-0.1.0-py3-none-any.whl \ --python-tag=hello --platform-tag=world --abi-tag=abc
上のコマンドを実行すると次のファイル名のWheelが作られる。abi tagも指定できる。
- oreore-0.1.0-hello-abc-world.whl
適切なタグ名を取得する
各タグの名前を取得するのには、packagingというパッケージが使える。
例えば、動作しているPython環境に一番適合したタグ名は packaging.tags.sys_tags() により取得できる。
>>> import packaging.tags >>> print(next(packaging.tags.sys_tags())) cp312-cp312-manylinux_2_35_x86_64 >>>