由于sys.argv [0]引起的属性错误,因为c中的'import tensorflow as tf'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于sys.argv [0]引起的属性错误,因为c中的'import tensorflow as tf'相关的知识,希望对你有一定的参考价值。

我在Ubuntu14.4上运行的c文件中嵌入了python2.7 / python3.4m代码。 python代码是导入tensorflow,当它失败时。

#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安装中也会发生此问题。

答案

我太蠢了!这很有用,因为tensorflow需要sys.argv。

int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("import sys
"
                     "sys.argv = ['']");
  PyRun_SimpleString("import tensorflow as tf");
  Py_Finalize();
  return 0;
} 
另一答案

我发现旧版本(1.4.0)存在此错误,但不包括新版本(如tensorflow == 1.13.1),如果您可以将tensorflow更新到最新版本,这可能是更好的解决方案。

以上是关于由于sys.argv [0]引起的属性错误,因为c中的'import tensorflow as tf'的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS中出现这个错误

__file__ 和 sys.argv[0] 之间的区别

python sys.argv的用法

python sys.argv的用法

sys.argv.....

python中的sys.argv有啥用?print sys.argv啥意思?