Подтвердить что ты не робот

Ошибка в python после "import tensorflow": TypeError: __init __() получил неожиданный аргумент ключевого слова 'syntax'

Я установил TensorFlow на мой Ubuntu 15.10, как указано только для CPU:

$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl

Затем, когда я запускаю Python REPL и импортирую shadoworflow, я получаю:

$ python
Python 2.7.10 (default, Oct 14 2015, 16:09:02) 
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/__init__.py", line 4, in <module>
   from tensorflow.python import *
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 13, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 16, in <module>
    from tensorflow.core.framework import attr_value_pb2 as     tensorflow_dot_core_dot_framework_dot_attr__value__pb2
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/core/framework/attr_value_pb2.py", line 16, in <module>
    from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_pb2.py", line 16, in <module>
    from tensorflow.core.framework import tensor_shape_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__shape__pb2
  File "/home/phil/.local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_shape_pb2.py", line 22, in <module>
    serialized_pb=_b('\n,tensorflow/core/framework/tensor_shape.proto \x12\ntensorflow\"d\n\x10TensorShapeProto\x12-\n\x03\x64im\x18\x02 \x03(\x0b\x32 .tensorflow.TensorShapeProto.Dim\x1a!\n\x03\x44im\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
TypeError: __init__() got an unexpected keyword argument 'syntax'

У меня установлен пакет protobuf-compiler Ubuntu, а версия 2.6.1-1.2

4b9b3361

Ответ 1

Несколько пользователей сообщили о проблемах, возникающих при установке более старой версии protobuf.

TensorFlow требует (и использует копию) protobuf-3.0.0a4. Однако, похоже, это противоречит вашей установленной версии (возможно, из-за того, как в вашей системе настроена переменная среды PYTHONPATH?). Можете ли вы попробовать удалить пакет python-protobuf, если он установлен, а затем посмотреть, правильно ли запущен TensorFlow?

Некоторые пользователи имели успех при использовании virtualenv. Инструкции по установке TensorFlow в virtualenv см. В руководстве по началу работы.

Ответ 2

Этот комментарий github решил мою проблему.

Короче говоря, вам понадобится protobuf>=3.0, чтобы сделать работу tenorflow.

Сначала удалите все, что было protobuf, а затем pip install 'protobuf>=3.0.0a3'.

Это не просто проблема для Ubuntu, Mac OS также имеет аналогичную проблему.

Ответ 3

Это сработало для меня:

pip uninstall protobuf
pip uninstall tensorflow
brew uninstall protobuf
pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

import google.protobuf
>>> print google.protobuf.__version__
3.0.0a4
>>> import tensorflow

Ответ 4

Сегодня у меня была аналогичная проблема. Это было связано с тем, что я установил python 3.7, который не совместим с тензорным потоком по состоянию на 30 июля 2018 года. Снижение до 3.6 исправило проблему. Направляемое решение здесь, если кому-то интересно.

Следующая проблема github была полезна при решении этой проблемы: https://github.com/tensorflow/tensorflow/issues/17022

Ответ 5

Я получил ту же ошибку при запуске на python версии 2.7. Но все прошло отлично, когда я запустил его, используя версию python версии 3.

Попробуйте выполнить следующие команды в оболочке bash:

python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> exit()

Это сработало для меня.