在一个更大的类中,我有一段代码用于导入python脚本并运行它。文件(animate.py)包含在与可执行文件相同的目录中。
void classname::show( void )
{
stringstream run_cmd;
run_cmd << "animate.run('" << name << "')";
Py_Initialize();
PyRun_SimpleString("import animate");
PyRun_SimpleString(run_cmd.str().c_str());
Py_Finalize();
}
问题是,我正在使用两台计算机,当编译其中一台时,这很好用。在我的个人笔记本电脑上,它无法导入带有错误的scipt:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named animate
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'animate' is not defined
它们都是通过完全相同的makefile编译的,并使用了-lpython2.7
标志。文件结构也一样。
是否有一些我不想这样做的图书馆?
答案 0 :(得分:1)
您需要将当前工作目录添加到Python路径(默认情况下不包括):
Py_Initialize();
PyObject *sys_path = PySys_GetObject("path");
PyList_Append(sys_path, PyString_FromString("."));
PyRun_SimpleString("import animate");
PyRun_SimpleString(run_cmd.str().c_str());
Py_Finalize();