D:\Anaconda\envs\tf1\python.exe C:/Users/夏芷琳/Desktop/VAE-LSTM-for-anomaly-detection-master/codes/train.py Traceback (most recent call last): File "C:/Users/夏芷琳/Desktop/VAE-LSTM-for-anomaly-detection-master/codes/train.py", line 2, in <module> import tensorflow as tf File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\__init__.py", line 24, in <module> from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\python\__init__.py", line 52, in <module> from tensorflow.core.framework.graph_pb2 import * File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\core\framework\graph_pb2.py", line 15, in <module> from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2 File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\core\framework\node_def_pb2.py", line 15, in <module> from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2 File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\core\framework\attr_value_pb2.py", line 15, in <module> from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2 File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 15, in <module> from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2 File "D:\Anaconda\envs\tf1\lib\site-packages\tensorflow\core\framework\resource_handle_pb2.py", line 41, in <module> serialized_options=None, file=DESCRIPTOR), File "D:\Anaconda\envs\tf1\lib\site-packages\google\protobuf\descriptor.py", line 561, in __new__ _message.Message._CheckCalledFromGeneratedFile() TypeError: Descriptors cannot not 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
时间: 2023-08-05 13:03:53 浏览: 235
根据错误信息,这个问题是由于你的生成的代码(`_pb2.py`文件)与你安装的protobuf版本不兼容导致的。
根据错误提示,你需要重新生成你的protobuf代码,使用protoc版本大于等于3.19.0来进行生成。这样可以确保生成的代码与你安装的protobuf版本兼容。
你可以按照以下步骤重新生成protobuf代码:
1. 确保你已经安装了最新版本的protobuf。你可以使用以下命令来升级protobuf:
```
pip install --upgrade protobuf
```
2. 确保你已经安装了protoc编译器,并且其版本大于等于3.19.0。你可以在命令行中运行以下命令来检查protoc版本:
```
protoc --version
```
如果protoc版本低于3.19.0,请更新到最新版本。你可以在Protocol Buffers的官方网站上找到适合你操作系统的安装包。
3. 使用更新后的protoc编译器重新生成protobuf代码。在命令行中运行以下命令:
```
protoc -I=<proto文件目录> --python_out=<生成代码目录> <proto文件>
```
其中,`<proto文件目录>`是包含proto文件的目录,`<生成代码目录>`是你想要生成代码的目录,`<proto文件>`是你要生成代码的proto文件名。
重新生成protobuf代码后,再运行你的程序,应该就能够解决这个问题了。如果问题仍然存在,你可以尝试降级protobuf包的版本,或者设置`PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python`环境变量来使用纯Python解析,但后者会导致解析速度较慢。
请确保按照官方文档中提供的链接获取更多信息,并根据你的具体情况进行调整。
阅读全文