Streamlit run with protocbuf error

Dear all,

I am trying to run streamlit under Ubuntu and get the following error:

streamlit
Traceback (most recent call last):
  File "/home/ubuntu/.local/bin/streamlit", line 5, in <module>
    from streamlit.cli import main
  File "/home/ubuntu/.local/lib/python3.8/site-packages/streamlit/__init__.py", line 48, in <module>
    from streamlit.proto.RootContainer_pb2 import RootContainer
  File "/home/ubuntu/.local/lib/python3.8/site-packages/streamlit/proto/RootContainer_pb2.py", line                                                                                                  33, in <module>
    _descriptor.EnumValueDescriptor(
  File "/home/ubuntu/.local/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 755, 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 wi                                                                                                 th 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 wil                                                                                                 l be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

But I already have protocbuf 4.20.x installed.

Any help is appreciated.
Thanks

3 Likes

I am running into the same problem. According to google doc, there is a need to set an environment variable to make it work.
Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
but there seems to be no place where i can set it.

I am getting the same error when I update my code an hour ago, now trying to resolve this. The app is running perfectly in my local environment.

1 Like

Same problem on windows for new install.

I encountered the same problem and avoided it by installing the compatible version of protobuf:


pip install 'protobuf~=3.19.0'

To deploy it on Streamlit Cloud, I added a line to requirements.txt:


For core dev team:

This is because the version of protobuf as a dependency of the streamlit package is specified as protobuf = ">=3.6.0, !=3.11", which allows installing major version-ups that may have breaking changes.

And it actually led to install a new version 4.21.0, which was released 5 hours ago with breaking changes, as described in the page linked from the error message:

The version specification in Pipfile should be something like protobuf = "~=3.19.0.
Set protobuf verion as ~=3.19.0 by whitphx · Pull Request #4779 · streamlit/streamlit · GitHub

4 Likes

Thank you all for bringing this issue to our attention! I’ve just notified the team :pray: