Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyImport\u导入失败-返回NULL_Python_C++_C - Fatal编程技术网

Python PyImport\u导入失败-返回NULL

Python PyImport\u导入失败-返回NULL,python,c++,c,Python,C++,C,首先,是的,我看到了,但是他们没有解决我的问题/错误。 因此,我试图从C/C++调用Python函数,但是当调用PyImport\u Import()时,它返回NULL 代码: 其中hello是我的hello.py文件,与可执行文件位于同一目录中。我不知道我的错误在哪里,有人能给我指一下吗?如果不知道有关系统设置和Python文件内容的大量信息,很难诊断您的问题。最好让Python运行时告诉您出了什么问题 美国 PyObject*PyImport\u导入模块(常量字符*名称) 返回对导入模块

首先,是的,我看到了,但是他们没有解决我的问题/错误。
因此,我试图从C/C++调用Python函数,但是当调用
PyImport\u Import()
时,它返回
NULL

代码:


其中
hello
是我的
hello.py
文件,与可执行文件位于同一目录中。我不知道我的错误在哪里,有人能给我指一下吗?

如果不知道有关系统设置和Python文件内容的大量信息,很难诊断您的问题。最好让Python运行时告诉您出了什么问题

美国

PyObject*PyImport\u导入模块(常量字符*名称)

返回对导入模块的新引用,或返回NULL,失败时设置异常

(强调矿山)

可以调用
PyErr\u Print()
将当前异常打印到stderr的状态

因此,要将此付诸实践:

PyObject* fname = PyBytes_FromString("hello");
PyObject* module = PyImport_Import(fname);
if (module == nullptr)
{
    PyErr_Print();
    std::exit(1);
}
这至少会让你开始找出错误


为了方便起见,您可能需要创建自己的C++异常类来包装Python错误(并且避免使用代码调用“代码> >退出<代码>之类的代码来处理代码。

< P>我认为 pyBythyFasSoists<代码>是<代码> PyStRigIn从.P/>中的3×x替代方案。 我错了
PyUnicode\u FromString
是正确的选择


(感谢@wakjah为我提供了使用错误处理的技巧)

谢谢!原来
PyBytes\u FromString()
不是
PyString\u FromString()
的3.x替代方案。我得到的错误是
PyImport\u Import()
不接受字节,而是字符串
PyUnicode\u FromString()
解决了这个问题。再次感谢!;)使用PyErr_Print()帮助我找出了问题所在。
PyObject* fname = PyBytes_FromString("hello");
PyObject* module = PyImport_Import(fname);
if (module == nullptr)
{
    PyErr_Print();
    std::exit(1);
}