C++调用Python脚本失败,当被调用的SIPT导入另一个脚本时

2024-05-23 14:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在C++ C++中调用一个Python SCIPT EME> SayHelo.py.EEM >,位于我的C++程序中,这里是我的C++代码:

Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('D:/semantic_segmentation/scripts')");
PyObject* pModule = PyImport_ImportModule("sayhello");

sayhello.py的代码是:

import sys
sys.path.append("..")
import a

def _sayhello(x):
    print('hello')
    return x

_sayhello(1)

当我运行C++程序时,函数 PyIngPyIMPultMeule返回null,但是当我运行 SayeloL.Py ^ ^ }时,它工作得很好。我怎样才能解决这个问题

编辑: 我发现问题出现在以下代码中:

sys.path.append("..")
import a
<> P> C++程序在导入EM> SayeloL.Py < EEM >中的其他脚本时不起作用。但是当我移动< EM > ApPy EEE>到与 SayHelo.Py < EEM >相同的路径时,导入 A.Py < EEM >只有用{{CD2}},我的C++程序才能工作。因此,我的问题是,当被叫脚本调用另一个路径中的另一个脚本时,如何使我的C++程序调用Python脚本?


Tags: path代码pyimport程序脚本syspyrun
1条回答
网友
1楼 · 发布于 2024-05-23 14:25:26

python代码似乎假定进程的当前工作目录是D:/semantic_segmentation/scripts目录,但情况并非如此

以下是两种解决方案:

    < L> >用{{CD2}}或Windows等效项或更改C++程序的工作目录
  • 更改python代码以计算从脚本文件而不是当前工作目录开始的绝对路径。见this answer

相关问题 更多 >