1
我正在学习/尝试在C中的Python扩展。我试图包装一个C库,以便它可以以更Pythonic的方式使用。例如:命名空间/软件包名称与Python的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扩展程序通常如何打包/分发?
你有一个有效的mylib包吗?即带\ _ \ _ init \ _ \ _。py文件的mylib目录 –