linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法
2017-03-17 16:31
1316 查看
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设置程序的语句,设置程序的语句在初始化之前,传参要在之后:
这样就可以调用含有tensorflow库的python文件了。
2.第二个问题,我的程序的python部分的功能是用训练好的模型来预测c++产生的图片,调用python是在循环中多次调用。
发现第一次运行无误,第二次PyImport_ImportModule()直接报错退出,NULL都不返回。
解决方法是,将初始化传参以及设置系统路径的语句和Finalize语句放到循环外
3.第三个问题,终于可以运行后,python本身出现问题,依旧是第一次可以运行,第二次报错:
提示我网络的变量已经存在(应该是第一次运行的时候生成的):
解决方法是,在python结束前加入语句:
tf.reset_default_graph 释放掉网络
首先排查是否设置对了路径。
然后在后面加入语句,PyErr_Print(),这样python出现的错误就会在eclipse的控制台打印出来。非常有用。
我的问题出在import tensorflow这个语句中出现了,错误信息是:
'module' object has no attribute 'argv'
原因是:
tensorflow需要给程序传入命令行参数。
所以保证python文件有接收argv参数的main函数:
def main(argv=None):
然后在C++中加入传递参数的语句,以及给python设置程序的语句,设置程序的语句在初始化之前,传参要在之后:
这样就可以调用含有tensorflow库的python文件了。
2.第二个问题,我的程序的python部分的功能是用训练好的模型来预测c++产生的图片,调用python是在循环中多次调用。
发现第一次运行无误,第二次PyImport_ImportModule()直接报错退出,NULL都不返回。
解决方法是,将初始化传参以及设置系统路径的语句和Finalize语句放到循环外
3.第三个问题,终于可以运行后,python本身出现问题,依旧是第一次可以运行,第二次报错:
提示我网络的变量已经存在(应该是第一次运行的时候生成的):
解决方法是,在python结束前加入语句:
tf.reset_default_graph 释放掉网络
相关文章推荐
- 使用eclipse编译qt程序遇到问题的解决方法
- python在linux下使用多进程遇到3770问题解决方法
- 【Android学习笔记】如何使用Eclipse在Android项目中调用C/C++代码,及遇到的错误解决方法
- 11.Cocos2dx2.2下使用JNI技术调用jar包里面的一些方法遇到的一些问题及解决方式。
- ACE与C++/CLI集成使用时遇到的问题及解决方法
- Windows下使用python-nmap库可能遇到的问题及解决方法(续)
- Linux(CentOS 7) eclipse c++ binary not found问题解决方法
- Linux搭建python环境中cx_Oracle模块安装遇到的问题与解决方法
- Linux下使用Eclipse编译C/C++代码时遇到问题的说明
- 使用C++调用Python脚本的步骤和问题解决办法
- eclipse svn同步程序报错 Attempted to lock an already-locked dir(使用此方法已经解决问题)
- 在CentOS上使用Neatbeans开发C++,调用Python的过程、遇到的问题和解决办法
- Linux下eclipse编译C/C++程序遇到 undefined reference to `pthread_create'的异常解决办法
- Eclipse使用遇到的问题解决方法收集
- Windows下使用python-nmap库可能遇到的问题及解决方法(续)
- 使用eclipse遇到的问题和解决方法集
- 使用Eclipse集成SDK时C++遇到的问题及解决
- linux下编译C++程序出现错误 “*** stack smashing detected ***, eclipse解决方法
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- Windows下用Eclipse开发Hadoop程序遇到的问题及解决方法