from . import DataBlock_pb2 python3.10或者高版本上出现需错误,python3.8正常通过
TypeError Traceback (most recent call last) Cell In[4], line 5 3 path = meb.get_path(r"ECMWF_HR/WIND/850/YYMMDDHH.TTT",time2,24) 4 print(path) ----> 5 grd = meb.io.read_gridwind_from_gds(path) 6 print(grd)
File s:\anaconda\envs\MeteoPy310\lib\site-packages\meteva\base\io\read_griddata.py:509, in read_gridwind_from_gds(filename, grid, level, time, dtime, data_name, dtime_units, outer_value, show) 505 def read_gridwind_from_gds(filename,grid = None,level = None,time = None,dtime = None,data_name = "data0",dtime_units = "hour",outer_value = None,show = False): 506 # ip 为字符串形式,示例 “10.20.30.40” 507 # port 为整数形式 508 # filename 为字符串形式 示例 "ECMWF_HR/TCDC/19083108.000" --> 509 from . import DataBlock_pb2 510 if meteva.base.gds_ip_port is None: 511 print("请先使用set_config 配置gds的ip和port")
File s:\anaconda\envs\MeteoPy310\lib\site-packages\meteva\base\io\DataBlock_pb2.py:44 26 DESCRIPTOR = _descriptor.FileDescriptor( 27 name='DataBlock.proto', 28 package='', 29 syntax='proto3', 30 serialized_pb=_b('\n\x0f\x44\x61taBlock.proto"E\n\x0cStringResult\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t"M\n\x0f\x42yteArrayResult\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\x12\x11\n\tbyteArray\x18\x03 \x01(\x0c"h\n\x18StringAndByteArrayResult\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\x12\x10\n\x08\x64\x61taName\x18\x03 \x01(\t\x12\x11\n\tbyteArray\x18\x04 \x01(\x0c"[\n\x0e\x46ileInfoResult\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\x12\x0e\n\x06isFile\x18\x03 \x01(\x08\x12\x10\n\x08\x66ileSize\x18\x04 \x01(\x03"\x94\x01\n\tMapResult\x12\x11\n\terrorCode\x18\x01 \x01(\x05\x12\x14\n\x0c\x65rrorMessage\x18\x02 \x01(\t\x12,\n\tresultMap\x18\x03 \x03(\x0b\x32\x19.MapResult.ResultMapEntry\x1a\x30\n\x0eResultMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42)\n\x1c\x63n.gov.cma.cimiss.gds.serverB\tDataBlockb\x06proto3') 31 ) 32 _sym_db.RegisterFileDescriptor(DESCRIPTOR) 37 _STRINGRESULT = _descriptor.Descriptor( 38 name='StringResult', 39 full_name='StringResult', 40 filename=None, 41 file=DESCRIPTOR, 42 containing_type=None, 43 fields=[ ---> 44 _descriptor.FieldDescriptor( 45 name='errorCode', full_name='StringResult.errorCode', index=0, 46 number=1, type=5, cpp_type=1, label=1, 47 has_default_value=False, default_value=0, 48 message_type=None, enum_type=None, containing_type=None, 49 is_extension=False, extension_scope=None, 50 options=None), 51 _descriptor.FieldDescriptor( 52 name='errorMessage', full_name='StringResult.errorMessage', index=1, 53 number=2, type=9, cpp_type=9, label=1, 54 has_default_value=False, default_value=_b("").decode('utf-8'), 55 message_type=None, enum_type=None, containing_type=None, 56 is_extension=False, extension_scope=None, 57 options=None), 58 _descriptor.FieldDescriptor( 59 name='name', full_name='StringResult.name', index=2, 60 number=3, type=9, cpp_type=9, label=1, 61 has_default_value=False, default_value=_b("").decode('utf-8'), 62 message_type=None, enum_type=None, containing_type=None, 63 is_extension=False, extension_scope=None, 64 options=None), 65 ], 66 extensions=[ 67 ], 68 nested_types=[], 69 enum_types=[ 70 ], 71 options=None, 72 is_extendable=False, 73 syntax='proto3', 74 extension_ranges=[], 75 oneofs=[ 76 ], 77 serialized_start=19, 78 serialized_end=88, 79 ) 82 _BYTEARRAYRESULT = _descriptor.Descriptor( 83 name='ByteArrayResult', 84 full_name='ByteArrayResult', (...) 123 serialized_end=167, 124 ) 127 _STRINGANDBYTEARRAYRESULT = _descriptor.Descriptor( 128 name='StringAndByteArrayResult', 129 full_name='StringAndByteArrayResult', (...) 175 serialized_end=273, 176 )
File s:\anaconda\envs\MeteoPy310\lib\site-packages\google\protobuf\descriptor.py:621, in FieldDescriptor.new(cls, name, full_name, index, number, type, cpp_type, label, default_value, message_type, enum_type, containing_type, is_extension, extension_scope, options, serialized_options, has_default_value, containing_oneof, json_name, file, create_key) 615 def new(cls, name, full_name, index, number, type, cpp_type, label, 616 default_value, message_type, enum_type, containing_type, 617 is_extension, extension_scope, options=None, 618 serialized_options=None, 619 has_default_value=True, containing_oneof=None, json_name=None, 620 file=None, create_key=None): # pylint: disable=redefined-builtin --> 621 _message.Message._CheckCalledFromGeneratedFile() 622 if is_extension: 623 return _message.default_pool.FindExtensionByName(full_name)
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:
- Downgrade the protobuf package to 3.20.x or lower.
- 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