云加速应用于html网站,网站源码地址怎么看,wordpress 网易云,怎么查网站点击量下面c_python_utils.h是处理工具函数#xff0c;test.cpp是测试程序#xff0c;hello.py是python类 可是当我集成到项目中的时候#xff0c;PyImport_Import总是返回为空#xff0c;起初我以为是init#xff08;#xff09;中设置目录的问题#xff0c;但是目录设置的是…下面c_python_utils.h是处理工具函数test.cpp是测试程序hello.py是python类 可是当我集成到项目中的时候PyImport_Import总是返回为空起初我以为是init中设置目录的问题但是目录设置的是当前目录hello.py也放在当前目录。 然而然后让我发现项目是部署在服务器上的而服务器上可执行文件在某个目录内这个目录下根本就没有hello.py因为我没有放进去 所以根本就在当前目录下找不到就是这个小小的问题都把我折腾了好久现在想起来真是心伤啊。不过还是解决了。 /***************************************************************************************************
c_python_utils.hC Network Library, Copyright (c) Datatom Software, Inc.(2015)Author:liu.pan (liu.pandatatom.com)Creating Time:2015-5-4
***************************************************************************************************/
#ifndef _DTCORE_C_PYTHON_UTILS_H_
#define _DTCORE_C_PYTHON_UTILS_H_#include Python.h
#include stdio.h#ifdef __cplusplus
extern C {
#endif /* C *//**
* 调用python类中的成员函数
* param module python脚本名称不含扩展
* param class_name python类名称
* param function python类成员函数
* param format python类函数参数格式
* return 返回字符串
*/
char* py_call( const char* module, const char* class_name, char* function, char* format, ... )
{PyObject* pName NULL;PyObject* pMod NULL;PyObject* pDict NULL;PyObject* pClass NULL;PyObject* pInstance NULL;PyObject* pParam NULL;PyObject* pResult NULL;// 导入模块pName PyString_FromString(module);pMod PyImport_Import(pName);if( !pMod ){return ;}// 获取模块字典属性pDict PyModule_GetDict(pMod);if ( !pDict ){return ;}// 通过字典获取模块中的类pClass PyDict_GetItemString(pDict, class_name);if ( !pClass ){return ;}pInstance PyInstance_New(pClass, NULL, NULL);if ( !pInstance ){return ;}pResult PyObject_CallMethod(pInstance, function, format);char *rlt_ch NULL;PyArg_Parse( pResult, s, rlt_ch );return rlt_ch;
}/**
* 一些环境的初始化
*
*/
void init()
{Py_Initialize();PyRun_SimpleString(import sys);PyRun_SimpleString(sys.path.append(./));
}/**
* 逆初始化
*/
void finit()
{Py_Finalize();
}#ifdef __cplusplus
} /* extern C */
#endif /* C */#endif //_DTCORE_C_PYTHON_UTILS_H_ // test.cpp#include c_python_utils.h
#include stdio.hint main(int argc, char const *argv[])
{init();char* rlt_char py_call(hello, power, liupan, ());finit();printf(%s\n, rlt_char);return 0;
} # hello.py
class power():def liupan(self):return hello world 总结 所以如果PyImport_Import总是返回为空一定是查询目录的问题要么目录设置错误要么python代码根本没有在这个目录内。 因为C调用python是运行时执行的而不是编译时链接的。转载于:https://www.cnblogs.com/panliu/p/4485183.html