Windows C++程序调用包含TensorFlow代码的Python脚本出错问题的解决办法
2017-09-11 17:11
991 查看
在上一篇博文《如何实现Visual Studio C++调用TensorFlow代码》的末尾,我们提到,运行程序时,PyImport_ImportModule("TensorflowTest")可能会出错。出错信息如下:
可以看到,出错的原因是因为触发了threading.py的“assert tlock.locked()”。
如果在命令行中执行pythonTensorflowTest.py,则不会出错。只要在C++程序中调用PyImport_ImportModule("TensorflowTest"),就会出现该错误。总之,这是一个比较诡异的错误,在百度和谷歌上均无法找到该问题的解决方案。
经过跟踪调试,发现是“import tensorflow as tf”这行导入代码触发了异常。进一步跟踪后发现该异常是因为C++程序中调用PyImport_ImportModule("TensorflowTest")时,启动参数和命令行中执行python TensorflowTest.py时的启动参数不一样而导致。
最后测试成功的解决办法是将C:\ProgramFiles\Python35\Lib\site-packages\tensorflow\python\platform\flags.py的代码全部注释掉。
由于篇幅所限,具体的跟踪分析步骤就不列出来了。
可以看到,出错的原因是因为触发了threading.py的“assert tlock.locked()”。
如果在命令行中执行pythonTensorflowTest.py,则不会出错。只要在C++程序中调用PyImport_ImportModule("TensorflowTest"),就会出现该错误。总之,这是一个比较诡异的错误,在百度和谷歌上均无法找到该问题的解决方案。
经过跟踪调试,发现是“import tensorflow as tf”这行导入代码触发了异常。进一步跟踪后发现该异常是因为C++程序中调用PyImport_ImportModule("TensorflowTest")时,启动参数和命令行中执行python TensorflowTest.py时的启动参数不一样而导致。
最后测试成功的解决办法是将C:\ProgramFiles\Python35\Lib\site-packages\tensorflow\python\platform\flags.py的代码全部注释掉。
由于篇幅所限,具体的跟踪分析步骤就不列出来了。
相关文章推荐
- C++程序调包含TensorFlow代码的Python脚本出错问题的解决方案
- 使用C++调用Python脚本的步骤和问题解决办法
- linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法
- python MySQLdb在windows环境下的安装、出错问题以及解决办法
- C++调用Python脚本碰到的问题及解决方法【更新中】
- C++ 调用Python3 脚本中无法引入内建模块的问题 解决方法
- C#调用C(C++)dll示例教程,包含dll找不到函数入口的解决办法,包含C#dll调用方式不对出错的解决办法
- MATLAB在调用C/C++程序成功,使用opencv库时出错,错误显示“找不到指定模块”(问题未解决)
- 在Linux中#!/usr/bin/python之后把后面的代码当成程序来执行。 但是在windows中用IDLE编程的话#后面的都是注释,之后的代码都被当成文本了。 该怎么样才能解决这个问题呢?
- [原创]python MySQLdb在windows环境下的安装、出错问题以及解决办法
- windows下如何解决PHP调用的外部程序超时阻塞问题
- 基于ERP程序的公共代码中出现的问题及过度封装不方便维护的解决办法
- 基于ERP程序的公共代码中出现的问题及过度封装不方便维护的解决办法
- osql执行SQL脚本内容包含中文时出现乱码问题的解决办法
- Python 使用 UTF-8 编码,python代码中包含中文时执行脚本错误的解决办法。
- osql执行SQL脚本内容包含中文时出现乱码问题的解决办法
- Android问题集锦之八:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法
- Python 使用 UTF-8 编码,python代码中包含中文时执行脚本错误的解决办法。
- java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题
- c#程序在没有安装SQL2000机器上调用DTS包出错的解决办法【整理】