
Недавно, после нескольких месяцев отсутствия проблем, я внезапно не могу запустить команды Google Cloud SDK CLI / gcloud в Windows Terminal / PowerShell 7 (7.3).
Я получаю следующую ошибку:
>gcloud
C:\Users\admin10lap\AppData\Local\Programs\Python\Python39\python.exe: can't find '__main__' module in ''
Похоже, это происходит как с включенной опцией Python в установщике Google Cloud SDK, так и без нее (поскольку я несколько раз пытался переустановить Google Cloud SDK).
Как ни странно, эта ошибка не возникает при использовании PowerShell 5.x или командной строки CMD, а интерфейс командной строки gcp SDK в этих случаях работает нормально.
PowerShell 7 стал моим ежедневным помощником благодаря усовершенствованиям и настройкам, которые он предлагает при использовании с терминалом Windows, поэтому я отчаянно хочу, чтобы он снова заработал.
Я немного не в курсе, как устранить эту конкретную проблему. Если у кого-то есть какие-либо соображения относительно того, что может быть причиной того, что PowerShell 7 выдает эту ошибку Python, я буду очень признателен за любые отзывы.
Спасибо.
решение1
Осмотревшись, я нашел этоСсылка на проблему Githubгде ошибка уже была зарегистрирована после того, как gcloud перестал работать после обновления PowerShell до 7.3. Проблема зарегистрирована дляGoogle Облакоа также. Вы можете отслеживать обе ссылки на данный момент.
На данный момент есть несколько обходных путей, которые мы могли бы реализовать:
- Набор
$PSNativeCommandArgumentPassing = "Legacy"
, более подробная информация по этой ссылке оПредпочтительная переменная - Используйте PowerShell 7.2
Если у вас возникнут вопросы или пояснения, дайте мне знать.
решение2
С момента принятия первого ответа произошло несколько обновлений тикетов наGoogle ОблакоиГитхаб. Проблема была исправлена в gcloud SDK версии 413.0.0. Если вы используете более старую версию, вы можете выполнить исправление вручную. Сначала используйте эту команду, чтобы получить местоположение gcloud.ps1:
Get-Command gcloud | Select-Object Source
Далее отредактируйте этот файл. Около или на строке 109 будет этот текст:
$run_args_array += $cloudsdk_python_args.split(' ')
полностью замените строку на эту:
$run_args_array += $cloudsdk_python_args.split(' ', [StringSplitOptions]::RemoveEmptyEntries)
Это исправление из версии 413.0.0, поэтому gcloud будет работать после этого. Я рекомендую, чтобы самый первый вызов после этой точки был gcloud components update
.
(ч/т доэтот комментарий на GitHubдля вышеуказанных шагов)