C で Python 拡張機能を学習/実験しています。より Pythonic な方法で使用できるように C ライブラリをラップしようとしています。例えば:
import mylib
widget = mylib.widget.Widget(name="Hello!")
widget.show()
mylib.utils.say_hello()
C コードでは、渡されるモジュールの名前はPyModule_Create
それぞれ「mylib」、「mylib.widget」、「mylib.utils」です。mylib.widget
モジュールには新しいWidget
タイプも含まれています。
ただし、これらの拡張機能をそのスタイルのパッケージ/名前空間でインストールする方法がわかりません。私は試した:
from distutils.core import setup, Extension
setup(
...
ext_modules = [Extension('mylib', sources=['src/mylib.c'], ...),
Extension('mylib.widget', sources=['src/widget.c'], ...),
Extension('mylib.utils', sources=['src/utils.c'], ...)]
)
しかし、それはうまくいきません。「mylibにはwidgetという名前のモジュールがありません」。
C 拡張機能は一般的にどのようにパッケージ化/配布されますか?