解决问题:TypeError: Descriptors cannot not be created directly.(详细图文教程)

在这里插入图片描述

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》


在这里插入图片描述

一、问题

运行代码时提示如下报错:

在这里插入图片描述

二、解决办法

解决上面问题,直接在控制台中输入下面命令重新安装protobuf即可,如下:

pip install 'protobuf~=3.19.0'

在这里插入图片描述

三、总结

以上就是解决TypeError: Descriptors cannot not be created directly.的方法,希望能帮助到有同样问题的你!

感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖

关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

### 关于 `TypeError: Descriptors cannot be created directly` 的解决方案 当遇到错误 `TypeError: Descriptors cannot be created directly` 时,通常是因为使用的 Protobuf 版本与生成的 `.proto` 文件不兼容。具体来说,如果该调用源自 `_pb2.py` 文件,则表明所使用的生成代码已经过期,需使用 `protoc >= 3.19.0` 来重新生成这些文件[^1]。 #### 方法一:更新 Protocol Buffers 编译器并重编译 .proto 文件 为了确保一切正常工作,建议升级至最新版的 Protocol Buffers 编译器 (`protoc`) 并利用其来重新编译所有的 `.proto` 文件。这可以消除由于版本差异引起的各种潜在问题。 ```bash pip install --upgrade protobuf ``` 接着通过命令行工具执行如下操作: ```bash protoc --python_out=. your_file.proto ``` 上述指令将会基于最新的协议缓冲区定义生成新的 Python 类[^2]。 #### 方法二:回退 Protobuf 库版本 如果不方便立刻更新 `.proto` 文件或重新构建项目,那么可以选择将当前环境中的 `protobuf` 包降级到更早的一个稳定版本,比如 3.20.x 或者更低版本。这样做能够暂时绕过这个问题,但长远来看还是推荐按照官方文档指导完成必要的迁移工作。 ```bash pip uninstall protobuf pip install "protobuf<3.21" ``` #### 方法三:切换实现方式 作为最后的选择,在某些情况下可以通过设置环境变量 `PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python` 来强制使用纯 Python 实现而不是 C++ 扩展模块解析消息体。不过需要注意的是这种方法可能会显著降低性能表现。 ```bash export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python ``` 对于 Windows 用户而言则是采用以下形式设定环境变量: ```batchfile set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉研坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值