「Python」class DescriptorBase(metaclass=DescriptorMetaclass)

背景

系统:ubuntu 18.04
环境:apollo5.5,docker内部
执行代码:python cyber.py
错误内容:class DescriptorBase(metaclass=DescriptorMetaclass)
「Python」class DescriptorBase(metaclass=DescriptorMetaclass)_第1张图片

解决方法

通过对比已编译通过的代码,应该是python2.7库有问题,忘了当初是怎么修复的,想起来会补上来。下面是直接对照编译通过的代码来修改报错的descriptor.py文件

对报错的/home/apollo/.local/lib/python2.7/site-packages/google/protobuf/descriptor.py作以下修改:

  1. 在import处添加 import six
    在这里插入图片描述

  2. 将第113行括号中的metaclass=DescriptorMetaclass修改为six.with_metaclass(DescriptorMetaclass)
    在这里插入图片描述
    再执行python cyber.py就不会报错了

——————————————————————————————————————————————————-
按照上述步骤修改后如果出现如下错误:
「Python」class DescriptorBase(metaclass=DescriptorMetaclass)_第2张图片

初步推断应该是版本的问题,通过和编译运行通过的版本对比,发现pb的版本不一致,对齐pb版本后就没有该错误了

我使用的pb版本是:protobuf==3.17.3

你可能感兴趣的:(Python,python,apollo,docker)