您使用什么版本的 protobuf 以及什么语言?
版本:3.17.3
、3.18.0
、3.18.1
和3.19.0
语言:Python(版本3.7.2
、3.8.6
、3.9.0
和3.10.0
什么操作系统(Linux、Windows...)和版本? gLinux
您使用什么运行时/编译器(例如,python 版本或 gcc 版本) python 和/或 cpp
你做了什么? 重现该行为的步骤:
运行这个 bash 脚本。请注意,它需要pyenv
与 Python 版本一起安装3.7.2
。
#!/bin/bash
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
pyenv global 3.7.2
python -mvenv /tmp/venv
. /tmp/venv/bin/activate
python -m pip install protobuf==3.19.0
python -c "from google.protobuf import descriptor_pb2"
你期望看到什么
我希望这个脚本运行时不会出现错误。
你看到了什么?
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/venv/lib/python3.7/site-packages/google/protobuf/descriptor_pb2.py", line 5, in <module>
from google.protobuf import descriptor as _descriptor
File "/tmp/venv/lib/python3.7/site-packages/google/protobuf/descriptor.py", line 47, in <module>
from google.protobuf.pyext import _message
ImportError: cannot import name '_message' from 'google.protobuf.pyext' (/tmp/venv/lib/python3.7/site-packages/google/protobuf/pyext/__init__.py)
确保您包含可以帮助我们调试的信息(完整的错误消息、异常列表、堆栈跟踪、日志)。
这首先被检测为性能问题,因为我们的基准测试开始显示由于库在不知不觉中运行实现而导致的大幅回归python
。有关历史的更多背景信息,请参阅此问题。
关于您的项目/环境我们还应该了解的其他信息
许多 Python 版本和protobuf
库版本的组合都存在问题。以下是我在运行上述复制脚本时发现存在问题的组合:
Python版本 | 协议缓冲区版本 | 环境变量状态 | 结果 |
---|---|---|---|
3.7.2 | 3.19.0 | 未设置 | 默认python 执行不正确 |
3.7.2 | 3.19.0 | cpp |
结果出现上述错误 |
3.7.2 | 3.18.1 | 未设置 | 默认python 执行不正确 |
3.10.0 | 3.18.1 | 未设置 | 默认python 执行不正确 |
3.7.2 | 3.18.1 | cpp |
结果出现上述错误 |
3.10.0 | 3.18.1 | cpp |
结果出现上述错误 |
3.7.2 | 3.18.0 | 未设置 | 默认python 执行不正确 |
3.10.0 | 3.18.0 | 未设置 | 默认python 执行不正确 |
3.7.2 | 3.18.0 | cpp |
结果出现上述错误 |
3.10.0 | 3.18.0 | cpp |
结果出现上述错误 |
3.10.0 | 3.17.3 | 未设置 | 默认python 执行不正确 |
3.10.0 | 3.17.3 | cpp |
结果出现上述错误 |