linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法

1. PyImport_ImportModule()返回NULL

首先排查是否设置对了路径。

然后在后面加入语句,PyErr_Print(),这样python出现的错误就会在eclipse的控制台打印出来。非常有用。

我的问题出在import tensorflow这个语句中出现了,错误信息是:

'module' object has no attribute 'argv'

原因是:

tensorflow需要给程序传入命令行参数。

所以保证python文件有接收argv参数的main函数:

def main(argv=None):

然后在C++中加入传递参数的语句,以及给python设置程序的语句,设置程序的语句在初始化之前,传参要在之后:

linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法_第1张图片

这样就可以调用含有tensorflow库的python文件了。


2.第二个问题,我的程序的python部分的功能是用训练好的模型来预测c++产生的图片,调用python是在循环中多次调用。

发现第一次运行无误,第二次PyImport_ImportModule()直接报错退出,NULL都不返回。

解决方法是,将初始化传参以及设置系统路径的语句和Finalize语句放到循环外


3.第三个问题,终于可以运行后,python本身出现问题,依旧是第一次可以运行,第二次报错:

提示我网络的变量已经存在(应该是第一次运行的时候生成的):

解决方法是,在python结束前加入语句:

tf.reset_default_graph 释放掉网络


你可能感兴趣的:(linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法)