C++封装python扩展模块ImportError: No module named 原因分析

[首发地址]

 http://www.atolin.net/c%E5%B0%81%E8%A3%85python%E6%89%A9%E5%B1%95%E6%A8%A1%E5%9D%97importerror-no-module-named-%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90/


C++封装python扩展模块ImportError: No module named 原因分析

 

用C++为Python编写扩展模块(动态链接库),并在Python中调用C++开发的扩展功能函数过程,遇到如下错误的童鞋,系不系很苦恼啊:

 

Traceback (most recent calllast):

  File "t.py", line 6, in

    import Rabbit

ImportError: No modulenamed Rabbit

 

经过分析,可能的原因有:

1、  开发中若使用的Python2.5版本,请检查生成的动态库扩展名,是不是”pyd”;(若后缀是dll,悲催了,赶紧修改吧);

2、  在DLLMAIN的源代码中,将扩展模块的初始化代码导出:

#ifdef PYRABBIT_EXPORTS

#define PYRABBIT_API__declspec(dllexport)

#else

#definePYRABBIT __declspec(dllimport)

#endif

 

extern "C"  PYRABBIT_API void initRabbit(){

         PyObject*m=Py_InitModule("Rabbit", RabbitMethods);

}

3、  生成的动态库文件(后缀名为pyd),所在目录没有加入到环境变量里面,可以通过在控制台输入以下命令检查;

Import os

os.sys.path

你可能感兴趣的:(技术,Python,C++)