在C ++中嵌入Python:无法从同一目录导入

时间:2014-02-03 13:29:29

标签: python c++

在一个更大的类中,我有一段代码用于导入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标志。文件结构也一样。

是否有一些我不想这样做的图书馆?

1 个答案:

答案 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();