2016-12-25 3 views
0

私は、Ubuntu14.4で動作するcファイルの中にpython2.7/python3.4mコードを埋め込んでいます。 Pythonコードは、失敗するとテンソルフローをインポートします。sys.argvのためのAttributeError [インポートテンソルフローはtf内にある]

#include <stdio.h> 
#include <Python.h> 

int 
main(int argc, char *argv[]) 
{ 
    Py_SetProgramName(argv[0]); /* optional but recommended */ 
    Py_Initialize(); 
    PyRun_SimpleString("import tensorflow as tf"); 
    Py_Finalize(); 
    return 0; 
} 

これは、次のような出力が得られます。

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py", line 24, in <module> 
    from tensorflow.python import * 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 100, in <module> 
    from tensorflow.python.platform import app 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 23, in <module> 
    from tensorflow.python.platform import flags 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/flags.py", line 25, in <module> 
    _global_parser = _argparse.ArgumentParser() 
    File "/usr/lib/python2.7/argparse.py", line 1575, in __init__ 
    prog = _os.path.basename(_sys.argv[0]) 
AttributeError: 'module' object has no attribute 'argv' 

この中に任意の助けいただければ幸いです。私はcmakeとbazelを使ってそれを編集しました。

この問題は、virtualenvインストール内でも発生しています。

答えて

4

私はとても愚かです!テンソルフローがsys.argvを必要とするので、うまくいきます。

int 
main(int argc, char *argv[]) 
{ 
    Py_SetProgramName(argv[0]); /* optional but recommended */ 
    Py_Initialize(); 
    PyRun_SimpleString("import sys\n" 
        "sys.argv = ['']"); 
    PyRun_SimpleString("import tensorflow as tf"); 
    Py_Finalize(); 
    return 0; 
} 
関連する問題