C++调用python脚本,当python中又import了其他的模版时,c++报错,怎么解决呢

如题,我在c++里调用了一个简单的python脚本(xxx.py),这个脚本里面没有import其他,运行c++通过,但当py脚本中包含有第三方库时,编译报错,说是找不到xxx.py,

网上找了好久没找到,说是这里添加,求大神指点:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");

比如我的python的第三方模版在 E:\anaconda3\Lib\site-packages下,该怎么写呢~~~~在线等,很着急

PyRun_SimpleString("sys.path.append('./')");是加载运行python文件的地址,看描述不是环境问题。
遇到了一个相似的问题,搞了好久,希望可以帮到相似问题的同学。
现象是:我是在一个完整的项目中调用的python,不是在主进程中,编译只关联了libpython3.6m.so,但是在运行的时候,如果引入了第三方包,就会报找不到第三方包的so,因为第三方包的动态so对你的项目进程是有隔离的,没有被主动加载起来,暂时处理方法是在程序中手动去加载python.so
#include <dlfcn.h>
dlopen("/usr/anaconda3/lib/libpython3.6m.so", RTLD_LAZY | RTLD_GLOBAL);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-08
如果你执行father的话,这个时候father是__main__,不是module,所以会执行到father的fromsonimport*,这个时候python会去执行son.py,而son.py一开始就是fromfatherimport*,所以python又去执行father.py,因为father.py的一开始是fromsonimport*,并且因为之前执行过了,所以这个时候son已经在sys.modules里面,所以python不会重新执行son.py,而只是把sys.modules里面的son返回给你,所以当执行到father.py的print(x)的时候,还没有执行son.py里面的x=6,所以会有找不到x的attributeerror。解决的法就是最好根本不要有circularimport。追问

...没办法呀,我要调用第三方库,比如import numpy这些都会报错

本回答被网友采纳
第2个回答  2020-08-28

初始化前加入你的路径比如我的  Py_SetPythonHome(L"D:\\Anaconda3");


注意路径是‘\\’,一定要注意

第3个回答  2019-09-27
您好,我也有这个问题想请教,请问您解决了吗?
第4个回答  2018-08-07
最后怎么解决的能指导一下吗?
相似回答