
Recientemente, después de no haber tenido problemas durante meses, de repente no puedo ejecutar los comandos CLI/gcloud del SDK de Google Cloud en Windows Terminal/PowerShell 7 (7.3).
El error que recibo es:
>gcloud
C:\Users\admin10lap\AppData\Local\Programs\Python\Python39\python.exe: can't find '__main__' module in ''
Esto parece suceder con y sin la opción de Python incluida en el instalador del SDK de Google Cloud (ya que intenté reinstalar el SDK de Google Cloud varias veces).
Curiosamente, no recibo este error cuando uso PowerShell 5.x o el mensaje CMD y la CLI del SDK de gcp funciona bien en esos casos.
PowerShell 7 se ha convertido en mi controlador diario debido a las mejoras y personalizaciones que ofrece cuando se usa junto con el terminal de Windows, por lo que estoy desesperado por que vuelva a funcionar.
Estoy un poco fuera de mi conocimiento sobre cómo solucionar este problema específico, si alguien tiene alguna idea sobre lo que podría estar en juego causando que PowerShell 7 arroje este error de Python, agradecería mucho cualquier comentario.
Gracias.
Respuesta1
Al revisar, encontré esto.Enlace de problema de Githuben el que ya se presentó un error después de que gcloud dejó de funcionar después de actualizar PowerShell a 7.3. Se presenta un asunto paraNube de Googletambién. Puede realizar un seguimiento de ambos enlaces por ahora.
Por el momento, existen algunas soluciones que podríamos realizar:
- Colocar
$PSNativeCommandArgumentPassing = "Legacy"
, más información en este enlace sobreVariable de preferencia - Utilice PowerShell 7.2
Déjame saber si tienes preguntas o aclaraciones.
Respuesta2
Desde que se aceptó la primera respuesta, ha habido varias actualizaciones de los tickets enNube de GoogleyGitHub. El problema se solucionó según lo anterior en la versión 413.0.0 del SDK de gcloud. Si está ejecutando una versión anterior a esa, puede realizar la corrección manualmente. Primero, usa este comando para obtener la ubicación de gcloud.ps1:
Get-Command gcloud | Select-Object Source
A continuación, edite ese archivo. Alrededor o en la línea 109 estará este texto:
$run_args_array += $cloudsdk_python_args.split(' ')
reemplace la línea por completo con esto:
$run_args_array += $cloudsdk_python_args.split(' ', [StringSplitOptions]::RemoveEmptyEntries)
Esta es la solución de la versión 413.0.0, por lo que gcloud se ejecutará después de eso. Recomiendo que la primera invocación después de este punto sea gcloud components update
.
(h/t aeste comentario en GitHubpara los pasos anteriores)