因此,我试图用C语言创建一个python绑定模块,但对模块init函数的命名规则感到困惑,该函数由PyMODINIT_FUNC
声明,我看到了init_foo
和initfoo
,其他人正在使用PyInit_foo
,名称重要吗?我应该跟着哪一个
PyMODINIT_FUNC void init_foo(void) {...}
PyMODINIT_FUNC void initfoo(void) {...}
PyMODINIT_FUNC void PyInit_foo(void) {...}
Tags:
从Extending Python with C or C++ docs(Python3)
初始化函数必须命名为
PyInit_name()
,其中name是模块的名称,并且应该是模块文件中定义的唯一非静态项:您也可以在cpython source code(python3)上找到相同的模式
鉴于Extending Python with C or C++ docs(Python2)
初始化函数必须命名为
initname()
,其中name是模块的名称,并且应该是模块文件中定义的唯一非静态项:所以要回答你的问题,名字很重要。如果您正在编写一个兼容python2和python3的扩展,那么必须像这样实现模块init
注意:
PyMODINIT_FUNC void init_foo(void) {...}
这实际上是python2版本,用于导入此c扩展的模块名为_foo
Convention used to denote [internal c-api]相关问题 更多 >
编程相关推荐