Windows C++程序调用包含TensorFlow代码的Python脚本出错问题的解决办法

版权声明:本文为博主原创文章,如需转载请注明出处。因博主水平有限,如有疏忽遗漏,敬请指出。 https://blog.csdn.net/ShadowN1ght/article/details/77935299

在上一篇博文《如何实现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的代码全部注释掉。

由于篇幅所限,具体的跟踪分析步骤就不列出来了。



猜你喜欢

转载自blog.csdn.net/ShadowN1ght/article/details/77935299