C++调用python脚本,当python中又import了其他的模版时,c++报错,怎么解决呢
如题,我在c++里调用了一个简单的python脚本(xxx.py),这个脚本里面没有import其他,运行c++通过,但当py脚本中包含有第三方库时,编译报错,说是找不到...
如题,我在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("import sys");
PyRun_SimpleString("sys.path.append('./')");
比如我的python的第三方模版在 E:\anaconda3\Lib\site-packages下,该怎么写呢~~~~在线等,很着急 展开
5个回答
展开全部
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);
遇到了一个相似的问题,搞了好久,希望可以帮到相似问题的同学。
现象是:我是在一个完整的项目中调用的python,不是在主进程中,编译只关联了libpython3.6m.so,但是在运行的时候,如果引入了第三方包,就会报找不到第三方包的so,因为第三方包的动态so对你的项目进程是有隔离的,没有被主动加载起来,暂时处理方法是在程序中手动去加载python.so
#include <dlfcn.h>
dlopen("/usr/anaconda3/lib/libpython3.6m.so", RTLD_LAZY | RTLD_GLOBAL);
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这些都会报错
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好,我也有这个问题想请教,请问您解决了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询