问题1 pModule为空
c++调用Python时,要调用Python自定义函数,但是在调用 PyImport_ImportModule时,总是返回空。一直调用不成功,明明我已经通过pyList_append(syspath,目录路径)。但是就是找不到。正常用cmd脚本也能正常运行。
解决方案
// 初始化Python解释器
Py_Initialize();
// 添加包含自定义Python模块的目录到sys.path
std::string module_path = “/path/to/your/module”; // 替换为你的模块目录
std::string command = “import sys\nsys.path.append(’” + module_path + “’)”;
*PyRun_SimpleString(command.c_str()); // 导入Python模块 **
PyObject pModule = PyImport_ImportModule(“your_module_name”);
通过上面函数PyRun_SimpleString导入,而不是pyList_append函数导入。就能生效了。
如果是当前工作目录则添加这句:
PyRun_SimpleString(“sys.path.append(os.getcwd())”);
这里还有可能是依赖模块不存在,也会返回空。但是如果用命令行能正常调用。基本就排除import模块缺失的问题。
问题2 pFunc为空
pModule不为空了,pFunc又为空。
解决方案
一般可以在py文件自定义函数中打印几句话,如果有打印第一句话,说明进入了函数,如果一句都没有打印,很可能是函数输入的数量不对,比如要求输入三个参数,只传了两个,这时也会返回空。
下一个问题将解决c++多线程调用Python时,崩溃的问题…
编辑:myhappyandy
标签:调用,pFunc,Python,ImportModule,module,为空,path,pModule From: https://blog.csdn.net/myhappyandy/article/details/143352240