c ++运行python代码导入自定义模块

时间:2015-04-09 03:01:50

标签: python c++ boost-python

我是编写c ++ / python混合程序的新手。

我编译了my_class.so(在c ++中),可以在python中导入它。

以下程序运行没有任何问题。

#!/user/bin/env python
from my_class import *
l = my_class()
l.doSomething("filename")

我拥有相同文件夹下的所有内容,如果我启动python环境,我可以执行以下操作而不会出现任何错误

>>>import my_class

这是我接下来尝试的,我试图从c ++调用python脚本, "你好"和"导入numpy"部分成功运行没有任何问题。

接下来我尝试了一些纯粹实验性的东西,我想测试一下这种可能性,但是我不希望任何真正的应用程序,我想导入我自己的类。 如下所示(我知道我正在创建一个c ++ / python / c ++链):

#include <Python.h> 

int main(int argc, char *argv[]){ 
      Py_Initialize(); 
      //PyRun_SimpleString("print \"hello!\""); 
      //PyRun_SimpleString("import numpy"); 
      PyRun_SimpleString("import my_class"); 
      Py_Finalize(); 
      return 0; 
}

我收到以下错误:

Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named my_class

这并不奇怪,因为my_class不是标准模块,我可能需要告诉c ++程序中的python运行时在哪里找到这个模块。

但我不知道如何做到这一点。我假设至少我可以尝试安装&#34; my_class.so作为python标准路径中的自定义模块,但我想知道是否有更简单的解决方案。谢谢!

1 个答案:

答案 0 :(得分:1)

制作.so后,您可以安装my_class.so

结帐this postthis post