1 min read

C++ バインディングな Python パッケージのデバッグビルド版を公開する方法

nanobind は C++ で書かれたライブラリの Python バインディングを作成するツールですが、C++ 側で問題があるときに追いかけるのがパッケージだと凄く大変です。

時雨堂では nanobind を利用して libwebrtc ベースの自社製品用の C++ SDK と、libdatachannel の Python バインディングを公開しています。

ただ、これセグフォしたとき追いかけるのがほぼ不可能なのでデバッグビルドを気軽に試して貰って、lldb で追いかけやすくしたいなと考えていましたが、PyPI にデバッグビルドを主に容量的な問題で公開するわけにも行かないなと思っていて、悩んでいました。

そんなとき PEP 440Local version identifiers というのを見つけました。これは PyPI には公開できないけれど、独自で公開するならば <version>+<local version label> という形式でパッケージを作成できる仕組みです。

この +debug を付ける場合は pyproject.toml の version を指定せず dynamic = ["version"] という仕組みを利用します。

この仕組みを利用することで PyPI に公開しているのとは別に +debug を付けた whl ファイルを GitHub Releases に公開することで、 whl ファイルをダウンロードして気軽にデバッグビルを利用する事ができるようになりました。

https://github.com/shiguredo/libdatachannel-py/releases/tag/2025.1.0.dev4