protobuf incompatibility when installing tensorflow model garden - python

I try to test my installation of tensorflow model garden and execute the following command in my PowerShell:
python object_detection/builders/model_builder_tf2_test.py
Thereby, I get the following error message:
Traceback (most recent call last):
File "...\Documents\TensorFlow\models\research\object_detection\builders\model_builder_tf2_test.py", line 21, in <module>
import tensorflow.compat.v1 as tf
File "...\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 37, in <module>
from tensorflow.python.tools import module_util as _module_util
File "...\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 37, in <module>
from tensorflow.python.eager import context
File "...\Anaconda3\lib\site-packages\tensorflow\python\eager\context.py", line 29, in <module>
from tensorflow.core.framework import function_pb2
File "...\Anaconda3\lib\site-packages\tensorflow\core\framework\function_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 "...\Anaconda3\lib\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 "...\Anaconda3\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 16, in <module>
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "...\Anaconda3\lib\site-packages\tensorflow\core\framework\resource_handle_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 "...\Anaconda3\lib\site-packages\tensorflow\core\framework\tensor_shape_pb2.py", line 36, in <module>
_descriptor.FieldDescriptor(
File "...\Anaconda3\lib\site-packages\google\protobuf\descriptor.py", line 560, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
In my opinion, I need to install a later version than 3.19.0. of protoc, because the cal from a _pb2.py - file. As a result I looked for the version of protoc with pip show protobuf and get the following result:
Name: protobuf
Version: 4.21.1
Summary:
Home-page: https://developers.google.com/protocol-buffers/
Author: protobuf#googlegroups.com
Author-email: protobuf#googlegroups.com
License: 3-Clause BSD License
Location: ...\anaconda3\lib\site-packages
Requires:
Required-by: tensorflow, tensorflow-metadata, tensorflow-hub, tensorflow-datasets, tensorboard, proto-plus, googleapis-common-protos, google-api-core, apache-beam
So, there is installed a later version than 3.19.0 but it doesn't work.
Why does it not work and what can I do that it works?
For your information: I used the tutorial of tensorflow on this site.

Google introduced a new breaking change in protobuf-4.21.0. Anything later than that will not work. You need to install protobuf 3.20.x or earlier (like version 3.20.3.)
Alternately, you could set the environment variable that it recommends. I have found that it is convenient to put it into your __init__.py file like:
import os
# Google introduced an incompatibility into protobuf-4.21.0
# that is not backwards compatible with many libraries.
# Once those libraries have updated to rebuild their _pb2.py files,
# this can be removed.
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
The other solution would be to upgrade Tensorflow if they have a new version out that rebuilds with the latest protobuf.

Related

Tensorflow TypeError: Descriptors cannot be created directly

I've been working on installing and setting up the GPU version of tensorflow for about 8 hours now. I finally got everything full installed, but when I try to test it I get this error:
More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
>>> import tensorflow as tf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\__init__.py", line 40, in <module>
from tensorflow.python.eager import context
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\eager\context.py", line 32, in <module>
from tensorflow.core.framework import function_pb2
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\core\framework\function_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 "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\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 "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 16, in <module>
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\core\framework\resource_handle_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 "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\core\framework\tensor_shape_pb2.py", line 36, in <module>
_descriptor.FieldDescriptor(
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\google\protobuf\descriptor.py", line 560, in __new__
return _message.default_pool.FindFieldByName(full_name)
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
I'll put my installation setup below for reference:
Tensorflow 2.3.0
Python 3.8.10
CUDA 10.1
cuDNN 7.6
OS: Windows 10
I solved a similar issue faced while importing tensorflow module by downgrading protobuf from release 4.21.1 to version 3.19.4
$ pip install protobuf
Requirement already satisfied ... (4.21.1)
$ pip uninstall protobuf
Found existing installation: protobuf 4.21.1
Uninstalling protobuf-4.21.1:
Would remove:
/home/kali/.local/lib/python3.10/site-packages/google/protobuf/*
/home/kali/.local/lib/python3.10/site-packages/protobuf-4.21.1-py3.10-nspkg.pth
/home/kali/.local/lib/python3.10/site-packages/protobuf-4.21.1.dist-info/*
Proceed (Y/n)? Y
Successfully uninstalled protobuf-4.21.1
$ pip install protobuf==3.19.4

ModuleNotFoundError: No module named 'keras.api' error

I am trying to run a ".py" file on windows 10 with tensorflow version 2.8.0 and keras version 2.3.4, where I am calling libraries as follows
from tensorflow import keras
from keras.models import load_model
However, I am getting an error message "ModuleNotFoundError: No module named 'keras.api'"
as shown in the error log below.
DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
from distutils.log import debug
Using TensorFlow backend.
Traceback (most recent call last):
File "C:\Users\saniy\OneDrive\Derma-Project\app1.py", line 5, in <module>
from keras.models import load_model
File "C:\Python310\lib\site-packages\keras\__init__.py", line 3, in <module>
from . import utils
File "C:\Python310\lib\site-packages\keras\utils\__init__.py", line 26, in <module>
from .vis_utils import model_to_dot
File "C:\Python310\lib\site-packages\keras\utils\vis_utils.py", line 7, in <module>
from ..models import Model
File "C:\Python310\lib\site-packages\keras\models.py", line 12, in <module>
from .engine.training import Model
File "C:\Python310\lib\site-packages\keras\engine\__init__.py", line 8, in <module>
from .training import Model
File "C:\Python310\lib\site-packages\keras\engine\training.py", line 14, in <module>
from . import training_utils
File "C:\Python310\lib\site-packages\keras\engine\training_utils.py", line 17, in <module>
from .. import metrics as metrics_module
File "C:\Python310\lib\site-packages\keras\metrics.py", line 1850, in <module>
BaseMeanIoU = tf.keras.metrics.MeanIoU
File "C:\Python310\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 58, in __getattr__
module = self._load()
File "C:\Python310\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 41, in _load
module = importlib.import_module(self.__name__)
File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'keras.api'
I am wondering if you can help in this regard.
I am not sure how keras 2.3.4 is installed but minimum version of keras for tf 2.8 is 2.8; Just upgrade your keras version
pip install keras==2.8
Since version 2 of Tensorflow (TF), the Keras package comes installed alongside. Meaning that if you make pip install tensorflow, will install the latest TF version (2.8) and Keras 2.8. As the other answer suggests, I would guess you have some old Keras version installed on your computer.
My advise would be to create a fresh virtual environment,
python3 -m venv ENV_DIR
and then freshly install all the requirements that your .py file needs from scratch. This will hopefully solve your issue and it is also best practice not to mess with different Python packages versions throughout your projects.

unknown version in python library pyparsing

I am trying to install airnotifier on my machine, I am getting this error
My python version is 3.6
PS C:\airnotifier> python app.py
Traceback (most recent call last):
File "app.py", line 32, in <module>
from pushservices.bootstrap import init_messaging_agents
File "C:\airnotifier\pushservices\bootstrap.py", line 4, in <module>
from .fcm import FCMClient
File "C:\airnotifier\pushservices\fcm.py", line 5, in <module>
from oauth2client.service_account import ServiceAccountCredentials
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\oauth2client\service_account.py", line 25, in <module>
from oauth2client import client
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\oauth2client\client.py", line 39, in <module>
from oauth2client import transport
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\oauth2client\transport.py", line 17, in <module>
import httplib2
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\__init__.py", line 52, in <module>
from . import auth
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\auth.py", line 4, in <module>
import pyparsing as pp
File "C:\Users\smacrsadmin\AppData\Local\Programs\Python\Python36\lib\site-packages\pyparsing\__init__.py", line 130, in <module>
__version__ = __version_info__.__version__
AttributeError: 'version_info' object has no attribute '__version__'
I received the same error and I'm also in Python 3.6.0 ...
AttributeError: 'version_info' object has no attribute '__version__'
If you want to dig a little more, you can type this in your console and detect which package is using this dependency.
> pip show pyparsing
In my case the output was something like this, indicating that packaging:
Name: pyparsing
Version: 2.4.7
Summary: Python parsing module
License: MIT License
Location:
Requires:
Required-by: packaging
To fix it, you can go with the suggestion from PaulMcG
pip install pyparsing==2.4.7
Update 2022-Jun-03:
Reference to the issue
https://github.com/pyparsing/pyparsing/releases/tag/pyparsing_3.0.8
Note says:
API CHANGE: modified pyproject.toml to require Python version 3.6.8 or
later for pyparsing 3.x. Earlier minor versions of 3.6 fail in
evaluating the version_info class (implemented using
typing.NamedTuple). If you are using an earlier version of Python 3.6,
you will need to use pyparsing 2.4.7.

how to install older versions of tensor flow

I am getting headache with tensorflow installations...
I have CUDA 8, CUdnn 6 and UBUNTU 16.04, python 2.7
I want now to install yensorflow. I have followed what they have explained for installation on the website but I have version ismatches of libraries.
As I am using caffe, I do not want to change those versions. So I have to go for older versions of tensorflow it seems.
But I can not find a good way to install it. Every time it is just failuare. I am very tired now.
I go like this:
1- download tensorflow r1.4 from here:
https://github.com/tensorflow/tensorflow/tree/r1.4
2- My 'LD_LIBRARY_PATH' is:
:/usr/local/cuda-8.0/lib64/:/usr/local/cuda/lib64:/home/aa/torch/install/lib:/usr/lib/
3- The I run successfully this:
$ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
4- and this:
$ virtualenv --system-site-packages targetDirectory # for Python 2.7
5- I activate the environment
$ source ~/tensorflow/bin/activate
6- and this
(tensorflow)$ easy_install -U pip
Till here, everything is fine.
7- and when I run this line
pip install --upgrade tensorflow-gpu
It finished successfully with this message:
Successfully installed absl-py-0.1.10 numpy-1.14.1 protobuf-3.5.1 setuptools-38.5.1 six-1.11.0 tensorflow-gpu-1.5.0 tensorflow-tensorboard-1.5.1 werkzeug-0.14.1 wheel-0.30.0
But then I cannot import it in python and this message is given:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 74, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/home/aa/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.
I think I should go for older versions.
I did install older versions
but then when I test installation in python I see this messages:
>>> import tensorflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 52, in <module>
from tensorflow.core.framework.graph_pb2 import *
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 16, in <module>
from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/core/framework/node_def_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/aa/.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/aa/.local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_pb2.py", line 16, in <module>
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/core/framework/resource_handle_pb2.py", line 22, in <module>
serialized_pb=_b('\n/tensorflow/core/framework/resource_handle.proto\x12\ntensorflow\"r\n\x13ResourceHandleProto\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04 \x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05 \x01(\tB/\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01\xf8\x01\x01\x62\x06proto3')
TypeError: __init__() got an unexpected keyword argument 'syntax'
>>> import tensorflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/home/aa/.local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
ImportError: cannot import name pywrap_tensorflow
You should be able to install earlier versions of tensorflow using
pip install tensorflow==1.3 where 1.3 is the version number. You can pick the version of your choice.
you can find .whl file of tensorflow in here https://pypi.python.org/pypi/tensorflow/1.4.0 and install it using pip.
hope you looking tensorflow 1.4.0 version in case if you want older version change url https://pypi.python.org/pypi/tensorflow/1.x.0(x= version you want)
'The problem is solved.
I had "/usr/lib/python2.7/dist-packages" in my PYTHONPATH.
So there was a version mismatch between protobufs and it was solved by typing 'unset PYTHONPATH' before starting to import tensorflow.

TensorFlow in Visual Studio 2015, using Canopy as the Python environment

I followed the instructions on this page and managed to install TensorFlow via pip within Visual Studio 2015. My Python environment runs in Enthought Canopy. The installation was successful. I refreshed the DB, and auto-completion via IntelliSense was available when I wrote the following line:
from tensorflow.examples.tutorials.mnist import input_data
However, when I run it in the REPL, I see the following error message:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\__init__.py", line 23, in <module>
from tensorflow.python import *
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
from tensorflow import contrib
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\contrib\__init__.py", line 23, in <module>
from tensorflow.contrib import layers
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\contrib\layers\__init__.py", line 68, in <module>
from tensorflow.contrib.layers.python.layers import *
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\contrib\layers\python\layers\__init__.py", line 22, in <module>
from tensorflow.contrib.layers.python.layers.initializers import *
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\contrib\layers\python\layers\initializers.py", line 24, in <module>
from tensorflow.python.ops import random_ops
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\ops\random_ops.py", line 23, in <module>
from tensorflow.python.framework import ops
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\framework\ops.py", line 39, in <module>
from tensorflow.python.framework import versions
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\framework\versions.py", line 22, in <module>
from tensorflow.python import pywrap_tensorflow
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "C:\Users\User\AppData\Local\Enthought\Canopy\User\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 20, in swig_import_helper
import _pywrap_tensorflow
ImportError: No module named _pywrap_tensorflow
Can anyone shed some light on why I get the message ImportError: No module named _pywrap_tensorflow even though the installation of TensorFlow took place without a hiccup? Any suggestions on how I can resolve this issue?
The current version of TensorFlow does not support running on Windows. In particular, the PIP packages available here are for Linux and Mac OS X only: they include a native compiled library called _pywrap_tensorflow that has not been compiled for Windows.
As suggested in another answer, you can run TensorFlow on Windows using a Docker container. There is an open issue on GitHub concerning better Windows support, but this will depend on Bazel adding support for Windows build (currently targeted for later this year).

Categories