
Recentemente, depois de meses sem problemas, de repente não consigo executar os comandos CLI/gcloud do Google Cloud SDK no Windows Terminal/PowerShell 7 (7.3).
O erro que estou recebendo é:
>gcloud
C:\Users\admin10lap\AppData\Local\Programs\Python\Python39\python.exe: can't find '__main__' module in ''
Isso parece acontecer com e sem a opção python incluída no instalador do Google Cloud SDK (já que tentei reinstalar o Google Cloud SDK várias vezes).
Estranhamente, não recebo esse erro ao usar o prompt do PowerShell 5.x ou CMD e a CLI do SDK do gcp funciona bem nesses casos.
O PowerShell 7 se tornou meu driver diário devido às melhorias e personalizações que oferece quando usado em conjunto com o terminal Windows, por isso estou desesperado para fazê-lo funcionar novamente.
Estou um pouco perdido sobre como solucionar esse problema específico. Se alguém tiver alguma ideia do que pode estar em jogo, fazendo com que o PowerShell 7 gere esse erro de python, eu apreciaria muito qualquer feedback.
Obrigado.
Responder1
Ao dar uma olhada, encontrei issoLink de problema do Githubem que um bug já foi registrado depois que o gcloud parou de funcionar após atualizar o PowerShell para 7.3. Um problema é arquivado paraGoogle Nuvemtambém. Você pode acompanhar os dois links por enquanto.
No momento, existem algumas soluções alternativas que poderíamos realizar:
- Definir
$PSNativeCommandArgumentPassing = "Legacy"
, mais informações neste link sobreVariável de preferência - UsarPowerShell 7.2
Deixe-me saber se você tiver dúvidas ou esclarecimentos.
Responder2
Desde que a primeira resposta foi aceita, houve diversas atualizações nos tickets emGoogle NuvemeGitHub. O problema foi corrigido de acordo com o anterior no gcloud SDK versão 413.0.0. Se você estiver executando uma versão anterior a essa, poderá realizar a correção manualmente. Primeiro, use este comando para obter a localização de gcloud.ps1:
Get-Command gcloud | Select-Object Source
Em seguida, edite esse arquivo. Perto ou na linha 109 estará este texto:
$run_args_array += $cloudsdk_python_args.split(' ')
substitua a linha inteiramente por esta:
$run_args_array += $cloudsdk_python_args.split(' ', [StringSplitOptions]::RemoveEmptyEntries)
Esta é a correção da versão 413.0.0, então o gcloud será executado depois disso. Eu recomendo que a primeira invocação após este ponto seja gcloud components update
.
(h/t paraeste comentário no GitHubpara as etapas acima)