大規模な C++ 共有ライブラリ (libbig.so) からいくつかの関数を取得し、Cython を介して Python に公開しようとしています。そのために、Cython (pysmall.pyx) 経由で簡単に呼び出せるように、必要な共有ライブラリの機能の薄いラッパーを提供する小さな C++ ファイル (small.cpp) を用意しました。
libbig.so -> small.cpp, small.h -> libsmall.so -> pysmall.pyx -> pysmall.cpp -> pysmall.so
この拡張モジュールを自分のコンピューターでビルドして実行できます。small.cpp を libsmall.so にコンパイルし、setup.py の Extension オブジェクトで "libraries=['small']" と指定して、拡張モジュール pysmall をビルドします。 。それで。
現在、この拡張モジュールを配布しようとしていますが、Cython モジュールと C ソースおよび共有ライブラリを配布するための setup.py のベスト プラクティスを説明するリソースを追跡するのに苦労しています。「 Python モジュールのインストール」、「Python モジュールの配布」、および「Cython モジュールの配布」を読みました。拡張モジュールを単独で配布する方法を理解しています。拡張モジュールの依存関係を配布する最善の方法については、あまり確信が持てません。
Cython のドキュメントには、Cython が存在しない場合に備えて、生成された .cpp ファイルと .pyx ファイルを含める必要があることが示されていますが、それぞれの状況を最適に処理する方法を示すコードは提供されていません。また、Cython モジュールが依存する共有ライブラリを配布する方法についても言及していません。
pandas、lxml、pyzmq、h5py などの setup.py スクリプトを調べているところ、かなりの無関係な作業が発生しています。誰かがこのプロセスを加速するポインタまたはサンプル コードを持っている場合、私はそれを高く評価します!