无法从整数创建PyObject

时间:2013-04-28 09:51:14

标签: python c extend python-c-api

在C中编写Python 扩展时,我只是尝试测试一些事情,但意识到我无法从C {PyObject*构建int {1}}。这是一个可编辑的代码段,用于演示此问题(如果不是Mac,则可能需要#include <Python.h>),

#include <Python/Python.h>
int main(){
    PyObject* obj = Py_BuildValue("i", 42);
    return 0;
}

但这导致Segmentation fault: 11。基于Xcode的LLDB,在调用PyInt_FromLong时看起来有些问题?

如果我尝试使用double

做同样的事情
PyObject* obj = Py_BuildValue("d", 42.0);

它运作得很好......我无法在网上找到任何内容,也没有任何想法 - 任何帮助都有所帮助。

1 个答案:

答案 0 :(得分:4)

如果您尝试将Python嵌入到C程序中,首先必须使用Py_Initialize()初始化Python,并在完成后调用Py_Finalize()

试试这个......

#include <Python/Python.h>

int main()
{
    Py_Initialize();
    PyObject* obj = Py_BuildValue("i", 42);
    Py_Finalize();
    return 0;
}

...并查看embedding docs以获取更多示例。