<p>gsutil ImportError: não é possível importar o nome json_format</p>

Criado em 20 mai. 2018  ·  3Comentários  ·  Fonte: GoogleCloudPlatform/gsutil

Estou tentando usar a ferramenta de linha de comando gsutil para criar um intervalo e estou recebendo o seguinte erro: ImportError: cannot import name json_format (rastreamento de pilha completo abaixo). Mesmo executando um simples gsutil --help causa isso.

Não tive esse tipo de problema ao usar gsutil e não consigo me lembrar de nenhuma alteração específica em meu ambiente que pudesse causar esse erro. Só me lembro de atualizar gcloud components para 201.0.0 antes de ver esse erro. De qualquer forma, segui esta sugestão no Stack Overflow para reverter para gcloud components versão 175.0.0 executando gcloud components update --version 175.0.0 e este erro continua mesmo assim.

Quando poderemos usar gustil na gcloud components versão 201.0.0? Ou há alguma configuração que estou perdendo?

Traceback (most recent call last):
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/bootstrapping/gsutil.py", line 12, in <module>
    import bootstrapping
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 19, in <module>
    from googlecloudsdk.core.credentials import store as c_store
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 31, in <module>
    from googlecloudsdk.core import http
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/http.py", line 32, in <module>
    from googlecloudsdk.core.resource import session_capturer
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/session_capturer.py", line 34, in <module>
    from googlecloudsdk.core.resource import yaml_printer
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/yaml_printer.py", line 21, in <module>
    from googlecloudsdk.core.resource import resource_printer_base
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_printer_base.py", line 42, in <module>
    from googlecloudsdk.core.resource import resource_projector
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_projector.py", line 40, in <module>
    from google.protobuf import json_format as protobuf_encoding
ImportError: cannot import name json_format
Traceback (most recent call last):
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/bootstrapping/gsutil.py", line 12, in <module>
    import bootstrapping
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 19, in <module>
    from googlecloudsdk.core.credentials import store as c_store
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 31, in <module>
    from googlecloudsdk.core import http
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/http.py", line 32, in <module>
    from googlecloudsdk.core.resource import session_capturer
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/session_capturer.py", line 34, in <module>
    from googlecloudsdk.core.resource import yaml_printer
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/yaml_printer.py", line 21, in <module>
    from googlecloudsdk.core.resource import resource_printer_base
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_printer_base.py", line 42, in <module>
    from googlecloudsdk.core.resource import resource_projector
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_projector.py", line 40, in <module>
    from google.protobuf import json_format as protobuf_encoding
ImportError: cannot import name json_format

Obrigado e felicidades!

Comentários muito úteis

Semelhante ao que @gouglum disse acima, em uma VM bastante antiga meu sistema tinha o protobuf instalado em /usr/local/lib/python2.7/dist-pacakges . A atualização do gcloud não atualizou este protobuf, então tive que recorrer à execução: sudo pip install protobuf --upgrade que resolveu o problema.

Não tenho certeza se é porque eu estava atualizando de um gcloud (149) muito antigo ou se de alguma forma eu realmente tinha instalado o protobuf nos pacotes do sistema no início da vida da VM.

Todos 3 comentários

Parece que há várias versões atrás, a equipe do Cloud SDK adicionou o pacote google / protobuf [1] em seus scripts de inicialização (usados ​​para iniciar o gsutil e outras ferramentas). Parece que se o seu sistema tiver outra / uma versão mais antiga desse pacote, ele pode ter precedência sobre a versão que gcloud includes com seu pacote, causando este erro de importação. Se você tiver esse módulo instalado na instalação do sistema Python, tente desinstalá-lo para que a versão do gcloud seja usada. Se você estiver no macOS e usando homebrew, executar brew unlink protobuf@[YOUR INSTALLED VERSION] deve funcionar.

[1] https://github.com/google/protobuf/tree/master/python

Semelhante ao que @gouglum disse acima, em uma VM bastante antiga meu sistema tinha o protobuf instalado em /usr/local/lib/python2.7/dist-pacakges . A atualização do gcloud não atualizou este protobuf, então tive que recorrer à execução: sudo pip install protobuf --upgrade que resolveu o problema.

Não tenho certeza se é porque eu estava atualizando de um gcloud (149) muito antigo ou se de alguma forma eu realmente tinha instalado o protobuf nos pacotes do sistema no início da vida da VM.

Isso interrompe efetivamente o gsutil no RHEL ou Centos7. Existe alguma outra solução para corrigir isso além de remover o pacote python-protobuf? Esse pacote é necessário em meus sistemas para outros propósitos; removê-lo não é uma opção.

Esta página foi útil?
0 / 5 - 0 avaliações