tensorflow TypeError:无法直接创建描述符

2eafrhcq  于 2022-11-16  发布在  其他
关注(0)|答案(8)|浏览(353)

我尝试安装Ray,但它给出了一个错误:

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).

我试图解决这个问题,并降级了 protobuf

Name: protobuf
Version: 3.20.0
Summary: Protocol Buffers
Home-page: https://developers.google.com/protocol-buffers/
Author:
Author-email:
License: BSD-3-Clause
Location: d:\opencv\lib\site-packages
Requires:
Required-by: ray, tensorboard, tensorflow

但是Ray、TensorFlowKeras中的问题仍然存在。我的应用程序不再工作了。我该如何修复它?

j9per5c4

j9per5c41#

有时候,protobuf软件包可能在没有您参与的情况下被安装。对于这种情况,您有两种解决方案可供应用。请尝试以下解决方案之一,它应该会起作用。

解决方案1:

您可以降级protobuf插件,

pip install protobuf==3.20.*

或者你也可以把它作为最后一个包添加到requirements.txt文件中,因为这会覆盖之前安装的protobuf包。

...
protobuf==3.20.*

解决方案2:

可以设置以下环境变量。

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python

根据错误描述,这可能会影响程序性能。
但这将使用纯Python解析,速度会慢得多
参考文献:

soat7uwm

soat7uwm2#

在我的例子中,我没有在我的requirements.txt文件中显式地包含protobuf,但是我确实有一个相关的依赖项,这显然是有问题的:
googleapis-common-protos==1.6.0 # Depends on protobuf

***删除***这将允许后续的pip install -e .(假设存在setup.py)与google-api-core==1.13.0的任何依赖项匹配。这将导致安装googleapis-common-protos==1.56.2并解决错误。

2uluyalo

2uluyalo3#

或者,我能够升级到wandb==0.12.17,一切似乎都在工作。
旧(不工作):

- pip:
      - wandb==0.10.21

新(工作):

- pip:
      - wandb==0.12.17
e4yzc0pl

e4yzc0pl4#

解决方案1:降级protobuf protobuf最近发布了最新版本,此更新的原因出现此错误。我们需要做的就是将protobuf降级到3. 20. 1,您的错误就会得到解决。要降级protobuf只需在终端上运行此命令。
pip安装--升级“协议缓冲区〈=3.20.1”
或者你可以使用武力
pip安装'协议缓冲区〈=3.20.1' --强制重新安装
现在,你的错误必须得到解决谢谢.
解决方案2:将TensorFlow更新为最新版本TensorFlow已发布最新版本2.9.1于2022年5月23日只需更新其最新版本并于5月5日您的错误将得到解决。
管道安装tensorflow 量==2.9.1
始终使用最新版本的tensorflow
第一次显示一些错误,然后重试。我希望问题将得到解决。

htzpubme

htzpubme5#

无法直接创建描述符:
1.我们需要将protobuf软件包从4.21.2降级到3.20.1。
1.转到设置→ * 项目 * → *Python解释器 * →安装protobuf 3.20.1(指定版本)

ylamdve6

ylamdve66#

我发现了同样的问题,但我按照这个网页上的说明:

步骤

要求/先决条件:

1.斯芬克斯4.3.1
1.斯芬克斯-自动构建0.7.1
1.狮身人面像-内联-标签2021.4.11b9
1.主题2021.5
1.斯芬克斯-复制按钮0.4.0

  1. python -V的输出:
    Python语言3.8.10
  2. protoc.exe --version的输出:
    库协议3.21.0-rc 2

安装:

  1. pip install git+https://github.com/pypa/pypa-docs-theme.git#egg=pypa-docs-theme
    1.编译库
    1.将编译后的库从F:\temp\Python\protoc\packaging.python.org\protobuf\Debug复制到F:\temp\Python\protoc\packaging.python.org\protobuf\src

输出:

installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build\lib.win-amd64-3.8
creating build\lib.win-amd64-3.8\google
copying google\__init__.py -> build\lib.win-amd64-3.8\google
creating build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\any_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\api_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\descriptor.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\descriptor_database.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\descriptor_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\descriptor_pool.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\duration_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\empty_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\field_mask_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\json_format.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\message.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\message_factory.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\proto_builder.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\reflection.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\service.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\service_reflection.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\source_context_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\struct_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\symbol_database.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\text_encoding.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\text_format.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\timestamp_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\type_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\unknown_fields.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\wrappers_pb2.py -> build\lib.win-amd64-3.8\google\protobuf
copying google\protobuf\__init__.py -> build\lib.win-amd64-3.8\google\protobuf

...
testTimestampSerializeAndParse (google.protobuf.internal.well_known_types_test.TimeUtilTest) ... ok
testTimezoneAwareDatetimeConversionLA (google.protobuf.internal.well_known_types_test.TimeUtilTest)
testTimezoneAwareDatetimeConversionLA([1969, 12, 31, 18], datetime.timezone(datetime.timedelta(days=-1, seconds=57600), 'US/Pacific')) ... ok
testTimezoneAwareDatetimeConversionLondon (google.protobuf.internal.well_known_types_test.TimeUtilTest)
testTimezoneAwareDatetimeConversionLondon([1970, 1, 1, 2], datetime.timezone.utc) ... ok
testTimezoneAwareDatetimeConversionTokyo (google.protobuf.internal.well_known_types_test.TimeUtilTest)
testTimezoneAwareDatetimeConversionTokyo([1970, 1, 1, 11], datetime.timezone(datetime.timedelta(seconds=32400), 'Japan')) ... ok
testTimezoneNaiveDatetimeConversion (google.protobuf.internal.well_known_types_test.TimeUtilTest) ... ok
testByteSizeFunctions (google.protobuf.internal.wire_format_test.WireFormatTest) ... ok
testPackTag (google.protobuf.internal.wire_format_test.WireFormatTest) ... ok
testUnpackTag (google.protobuf.internal.wire_format_test.WireFormatTest) ... ok
testZigZagDecode (google.protobuf.internal.wire_format_test.WireFormatTest) ... ok
testZigZagEncode (google.protobuf.internal.wire_format_test.WireFormatTest) ... ok
wswtfjt7

wswtfjt77#

我在升级谷歌云日志后遇到了同样的问题,我通过升级谷歌云审计日志解决了这个问题。

pip install google-cloud-audit-log==0.2.4

工作版本:

pip freeze | grep google

google-api-core==2.10.2
google-api-python-client==2.57.0
google-auth==2.10.0
google-auth-httplib2==0.1.0
google-auth-oauthlib==0.5.2
google-cloud-appengine-logging==1.1.6
google-cloud-audit-log==0.2.4
google-cloud-core==2.3.2
google-cloud-logging==3.2.5
google-cloud-storage==2.5.0
google-crc32c==1.1.2
google-resumable-media==2.4.0
googleapis-common-protos==1.56.4
grpc-google-iam-v1==0.12.4

希望这能帮上忙干杯

9cbw7uwe

9cbw7uwe8#

我也遇到过同样错误
我通过安装protobuf解决了这个问题

pip安装协议缓冲区==3.20.*

Screen Snippet

相关问题