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目錄 –