在c ++中嵌入python时导入tensorflow会返回null

Nem*_*vic 6 c++ python embedding tensorflow

我有一个关于将python嵌入到C++应用程序中的问题.设置如下:我有一个大的C++应用程序,它生成一些数据(实时渲染图像)并显示它们.我还使用tensorflow在python中训练了一个神经网络,它将接受这些图像.

我的想法是嵌入python并将数据作为一个numpy数组发送,使用神经网络进行预测并获取另一个已处理的numpy数组(在C++中).我已经在python端做了一些没有tensorflow的基本测试,以便在c等中嵌入python,这似乎有效.

但是,一旦我将"import tensorflow"放入我要导入的任何python脚本中,我将从c ++部分的PyImport_ImportModule中获取NULL.

例如

import numpy as np
def foo(img):
    return np.clip(img * 2.0, 0, 255).astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)

工作良好.但以下不是:

import numpy as np
import tensorflow as tf #this causes the fail

def foo(img):
    return np.clip(img * 2.0, 0, 255).astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我仍然从tensorflow中获取stdout中的消息,它已找到cuda等,但随后模块导入失败.

我的设置是在Windows 10 x64,Anaconda Python 3.5,tensorflow-0.12和CUDA 8.有没有人遇到过类似的问题?我测试过的其他模块(numpy,pil,scipy)似乎装得很好.

如果它看起来无法解决,我会在c ++部分和python之间使用某种类型的IPC.

Nem*_*vic 4

我已经解决了这个问题。我需要使用 PySys_SetArgv 设置 argc 和 argv。我在导入失败后立即使用 PyErr_Occurred() 和 PyErr_Print() 发现了这一点,以查看问题。