从C角度来看,我对CPython的内部结构并不是很熟悉(尽管我已经从Python端加载了它们!)但我理解了基本原理 .
反过来,这个结构必须传递给模块初始化函数中的解释器 . 初始化函数必须命名为PyInit_name(),其中name是模块的名称,并且应该是模块文件中定义的唯一非静态项:PyMODINIT_FUNC
PyInit_spam(无效)
{
return PyModule_Create(&spammodule);
}
问题是,我不知道这意味着什么 . 假设我有一个简单的Python模块/ C程序组合:
#include "Python.h"
int main(int argc, char *argv[]) {
return 6;
}
PyMODINIT_FUNC
PyInit_spam(void) {
return PyErr_NoMemory();
}
当作为模块导入时,这会成功提升 MemoryError
吗?或者它会提高 ImportError
而不是?