Python Can';t从整数创建PyObject

Python Can';t从整数创建PyObject,python,c,extend,python-c-api,Python,C,Extend,Python C Api,在用C编写Python扩展时,我只是想测试一些东西,但意识到我无法从Cint构建PyObject*s。这里是一个可编译的代码片段,演示了问题(如果不是在Mac上,您可能必须#包括) 它工作得很好。。。我在网上找不到任何东西,也没什么想法,非常感谢您的帮助。如果您试图将Python嵌入C程序,首先必须使用Py_initialize()初始化Python,完成后应调用Py_Finalize() 试试这个 #include <Python/Python.h> int main() {

在用C编写Python扩展时,我只是想测试一些东西,但意识到我无法从C
int
构建
PyObject*
s。这里是一个可编译的代码片段,演示了问题(如果不是在Mac上,您可能必须
#包括


它工作得很好。。。我在网上找不到任何东西,也没什么想法,非常感谢您的帮助。

如果您试图将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;
}
#包括
int main()
{
Py_初始化();
PyObject*obj=Py_BuildValue(“i”,42);
Py_Finalize();
返回0;
}

…并查看更多示例。

我看不出代码有任何错误。你能不能拿出一个最简单完整的例子来演示这个问题,然后发布?@NPE代码只是在设置main,但我会发布它,不管怎样,你是在尝试将Python嵌入另一个应用程序吗?为Python编写扩展模块?只使用了
main
代码段,就缺少了整个Python运行时。我不想在C代码中嵌入解释器。我只想用
Py\u BuildValue
“d”
“s”
等做同样的事情@Jared:double工作时“integer”失败的原因可能是因为整数使用了预构建的小整数缓存,而缓存是从
Py\u Initialize
double构建的,double没有这样的缓存,所以它起作用了。。。很偶然。@Jared如果您在C代码中调用
Py\u BuildValue()
,而C代码不是扩展模块,那么根据定义,您是在C代码中嵌入Python。
PyObject* obj = Py_BuildValue("d", 42.0);
#include <Python/Python.h>

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