You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I spent a few hours trying multiple python etcd3 clients, and all failed because of protobuf. The steps were:
Run pip install etcd3.
Open the python interpreter.
Type import etcd3.
Got an error related to protobuf.
Python 3.12.3 (main, Nov 6 2024, 18:32:19) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import etcd3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/venv/lib/python3.12/site-packages/etcd3/__init__.py", line 3, in <module>
import etcd3.etcdrpc as etcdrpc
File "/tmp/venv/lib/python3.12/site-packages/etcd3/etcdrpc/__init__.py", line 1, in <module>
from .rpc_pb2 import *
File "/tmp/venv/lib/python3.12/site-packages/etcd3/etcdrpc/rpc_pb2.py", line 16, in <module>
from etcd3.etcdrpc import kv_pb2 as kv__pb2
File "/tmp/venv/lib/python3.12/site-packages/etcd3/etcdrpc/kv_pb2.py", line 33, in <module>
_descriptor.EnumValueDescriptor(
File "/tmp/venv/lib/python3.12/site-packages/google/protobuf/descriptor.py", line 920, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot 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
The solution is, either modify the requirements.txt to force using protobuf v3, or install the library directly from the sources:
I spent a few hours trying multiple python etcd3 clients, and all failed because of protobuf. The steps were:
pip install etcd3
.import etcd3
.The solution is, either modify the
requirements.txt
to force using protobuf v3, or install the library directly from the sources:Please, I suggest pushing the latest GitHub version to Pypi. If not, other people is going to get the same error.
The text was updated successfully, but these errors were encountered: