用C++為Python編寫(xiě)擴(kuò)展模塊(動(dòng)態(tài)鏈接庫(kù)),并在Python中調(diào)用C++開(kāi)發(fā)的擴(kuò)展功能函數(shù)過(guò)程,遇到如下錯(cuò)誤的童鞋,是不是很苦惱?。?
Traceback (most recent calllast):
File "t.py", line 6, in<module>
import Rabbit
ImportError: No modulenamed Rabbit
經(jīng)過(guò)分析,可能的原因有:
1、 開(kāi)發(fā)中若使用的Python2.5版本,請(qǐng)檢查生成的動(dòng)態(tài)庫(kù)擴(kuò)展名,是不是“pyd”;(若后綴是dll,悲催了,趕緊修改吧);
2、 在DLLMAIN的源代碼中,將擴(kuò)展模塊的初始化代碼導(dǎo)出:
#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、 生成的動(dòng)態(tài)庫(kù)文件(后綴名為pyd),所在目錄沒(méi)有加入到環(huán)境變量里面,可以通過(guò)在控制臺(tái)輸入以下命令檢查;華夏名網(wǎng)主機(jī)怎么樣
Import os
os.sys.path