c++调用python脚本出现的一些问题

c++调用python脚本

参考https://blog.csdn.net/u012986684/article/details/77802657

1. 一开始用的是python3,直接用的execfile执行python脚本

PyRun_SimpleString("execfile('/home/cbc/pcl_without_ros/qt/test_python/test.py')")

总是报错,如下:

NameError: name 'execfile' is not defined

解决:
因为execfile在python3中已被废除了。。
替代函数是exec(open(filename).read())
https://blog.csdn.net/ztf312/article/details/78500681

测试过,python2中使用execfile木有问题

2. BASE_DIR = os.path.dirname(os.path.abspath(__file__))

直接使用__file__会报错,如下

NameError: name '__file__' is not defined

解决如下,通过c++程序给sys设置参数,再在python中调用。

c++程序:

Py_Initialize();
if(!Py_IsInitialized())
{
    std::cout <<"1" <<std::endl;
    return -1;
}
PyRun_SimpleString("import sys");
int argc = 2;
char *argv[2];
argv[0] = "/home/cbc/DL/PointNet/pointnet/sem_seg/model.py";
argv[1] = "/home/cbc/pcl_without_ros/qt/test_python/test.py";
PySys_SetArgv(argc, argv);//设置sys参数

被调用的python程序:

try:
    approot = os.path.dirname(os.path.abspath(__file__))
except NameError:
    approot = os.path.dirname(os.path.abspath(sys.argv[0]))//调用sys参数

https://stackoverflow.com/questions/24140593/python-nameerror-name-file-is-not-defined

你可能感兴趣的:(机器视觉,程序编程)