我正在学习/实验 C 中的 Python 扩展。我正在尝试包装一个 C 库,以便可以以更 Pythonic 的方式使用它。例如:
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 扩展通常是如何打包/分发的?