我想编写一个Python包来包装一个我正在编写的新C库 - 说实话,这是一个学习练习。我想调用库spam
(当然),C库的结构是这样的。
Spam/
lib/
foo.c
Makefile
libspam.a /* Generated by Makefile */
libspam.so /* Generated by Makefile */
假设foo.c提供了一个公共函数foo(char * bar)
。同时,我想提供一个Python包。我想在同一名称空间下为foo
和另一个函数(例如safe_foo
)提供一个包装器。 safe_foo
是 Python 函数,它会对bar
执行一些检查,然后调用foo
。可以像这样调用它们
import spam
file='hello.txt'
foo(file)
safe_foo(file)
这可能吗?
类似的情况是我开发了一个Python包,然后想要在不破坏API的情况下将一个函数重新实现为C函数。
你或许可以看到我对Python打包有点新意了......
答案 0 :(得分:2)
通常的做法是在C模块前加下划线(例如_foo.so
),然后让Python模块正常命名(例如foo.py
)。 foo
执行_foo
的导入,并包含调用C模块中函数的存根。