gsutil不再有效?

时间:2017-11-09 11:24:57

标签: python gcloud gsutil google-cloud-sdk

我一直在使用gcloud和gsutil一段时间,但现在突然发现我运行的任何gsutil命令都会出错:

Traceback (most recent call last):
  File "/Users/julian/google-cloud-sdk/bin/bootstrapping/gsutil.py", line 12, in 
    import bootstrapping
  File "/Users/julian/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 22, in 
    from googlecloudsdk.core.credentials import store as c_store
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 27, in 
    from googlecloudsdk.core import http
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/http.py", line 31, in 
    from googlecloudsdk.core.resource import session_capturer
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/resource/session_capturer.py", line 32, in 
    from googlecloudsdk.core.resource import yaml_printer
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/resource/yaml_printer.py", line 17, in 
    from googlecloudsdk.core.resource import resource_printer_base
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_printer_base.py", line 38, in 
    from googlecloudsdk.core.resource import resource_projector
  File "/Users/julian/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_projector.py", line 34, in 
    from google.protobuf import json_format as protobuf_encoding
ImportError: cannot import name json_format

我尝试了gcloud update和gcloud重新安装,但仍然遇到同样的问题。是否与python安装有冲突?还有其他想法吗?

5 个答案:

答案 0 :(得分:6)

您还可以通过更新到最新版本的protobuf来修复此错误。那你就不必降级gcloud了。

def has_cyrillic(text):
    return bool(re.search('[\u0400-\u04FF]', text))

答案 1 :(得分:3)

如果安装了google protobuf软件包,则会出现此问题。

您可以通过运行

使用旧版本来解决此问题
gcloud components update --version 175.0.0

或删除google protobuf包python安装。

pip remove protobuf

如果你不想做其中任何一个,他们可以安装一个单独的2.7 python版本(没有protobuf)并设置CLOUDSDK_PYTHON = / path / to / python环境变量。

另外,下一版本的云sdk应该有这个修复。

答案 2 :(得分:1)

我有同样的问题。我正在使用mac。 查看/usr/local/lib/python2.7/site-packages我发现了一个自制的protobuf链接。 我用" rm homebrew-protobuf.pth"删除了它。 然后gsutil开始工作。

答案 3 :(得分:0)

对于使用Google Cloud SDK rpm安装的CentOS 7.5(可能还更早),删除protobuf-python软件包yum remove protobuf-python将解决此问题。

答案 4 :(得分:0)

我通过更新protobuf的自制安装来在Mac上修复此问题:

$ brew upgrade protobuf
...
==> Upgrading 1 outdated package, with result:
protobuf 2.6.1 -> 3.6.0
...

请参阅gsutil GitHub存储库上的this issue