Не удается установить gcloud на Amazon Linux: неверный синтаксис

Я пытаюсь установить gcloud на свой сервер EC2 под управлением Amazon Linux 4.14.47-56.37 64bit, в интерактивном режиме выполняя следующую команду:

curl https://sdk.cloud.google.com | bash

Файлы загружаются правильно, но затем установка завершается со следующей трассировкой:

  File "/home/ec2-user/google-cloud-sdk/bin/bootstrapping/install.py", line 12, in <module>
    import bootstrapping
  File "/home/ec2-user/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 32, in <module>
    import setup  # pylint:disable=g-import-not-at-top
  File "/home/ec2-user/google-cloud-sdk/bin/bootstrapping/setup.py", line 55, in <module>
    from googlecloudsdk.core import properties
  File "/home/ec2-user/google-cloud-sdk/lib/googlecloudsdk/core/properties.py", line 291
    self.__sections = {section.name: section for section in sections}
                                               ^
SyntaxError: invalid syntax

Любая идея, почему это вызывает проблемы?

Я использую Python 2.7 (2.7.14) в соответствии с рекомендациями Google.


person Dino    schedule 22.06.2018    source источник
comment
Похоже, сценарий установки находит версию Python, которая не поддерживает понимание словаря. У вас может быть старая установка Python (2.6 или ниже), которая была обнаружена до 2.7. Что вы видите, когда запускаете python2 --version? или даже python --version?   -  person Abdou    schedule 22.06.2018
comment
Версия ядра 4.14.47-56.37; какую версию дистрибутива вы используете? Это Amazon Linux 2 LTS? Если вы скажете нам это, мы сможем хотя бы посмотреть, какие версии всего, что он включает, вместо того, чтобы гадать. Кроме того, вы получили встроенный Python 2.7, из Amazon Linux Extras или из репозитория, отличного от Amazon?   -  person abarnert    schedule 22.06.2018
comment
Я пробовал это с Python 2.7.13 и работал. Если вы выполняете python --version и which python, указывает ли это на правильную версию Python?   -  person Miguel Ortiz    schedule 22.06.2018
comment
@Abdou и Мигель Ортис: python --version возвращает 2.7.14, и какой python действительно указывает на этот (/usr/bin/python), но python2 --version возвращает 2.6.9. Может ли это вызвать проблемы? Редактировать: Да, может. Я удалил python 2.6, и установка завершилась успешно.   -  person Dino    schedule 22.06.2018
comment
@abarnert: Amazon Linux AMI, выпуск 2018.03, это дистрибутив? Это не Amazon Linux 2. Получил python с yum, пакет python27 (в эту версию Amazon Linux встроен yum).   -  person Dino    schedule 22.06.2018
comment
Вы установили пакет python27-devel, а также python27? (Если нет, он может считать ваш 2.7 неполным и использовать вместо него 2.6.)   -  person abarnert    schedule 22.06.2018
comment
@Dino, я бы посоветовал не удалять установку Python, которую вы туда не устанавливали. Большинство систем поставляются с версиями Python по умолчанию, которые используются другими процессами. Вам нужно отредактировать переменную PATH, чтобы убедиться, что python2 указывает на вашу установку python2.7. Поскольку вы уже удалили установку 2.6, удачи!   -  person Abdou    schedule 22.06.2018


Ответы (5)


Помимо python 2.7, установленного в команде «python», у меня также был установлен python 2.6 в команде «python2». Удаление Python 2.6 решило проблему, установка Google Cloud прошла без проблем при следующей попытке.

person Dino    schedule 22.06.2018

Вы локально обновляете файл install.sh, чтобы использовать python2.7 вместо python2. Это сработало для меня

person user3097459    schedule 14.09.2018
comment
Работал и для меня. - person Sledge; 09.12.2019

Настройте yum-репозиторий:

# Update YUM with Cloud SDK repo information:
sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM
# The indentation for the 2nd line of gpgkey is important.

Установите загрузчик yum и загрузите rpm, затем установите с помощью «--nodeps»:

yum install yum-utils
yumdownloader google-cloud-sdk-231.0.0-1.el7.noarch
mv 23873bd6e8459ba6e70e96eb8f03f6ac03cd707ce3c80baa8264c714e030c915-google-cloud-sdk-231.0.0-1.el7.noarch.rpm /usr/local/src/google-cloud-sdk-231.0.0-1.el7.noarch
rpm -ivh --nodeps /usr/local/src/google-cloud-sdk-231.0.0-1.el7.noarch
person AAber    schedule 29.01.2019

На случай, если кто-то снова столкнется с этой проблемой, и если вы не хотите удалять python 2.6 или изменять install.sh, вот процедура, которая сработала для меня на экземпляре ec2:

откройте новый терминал и введите:

curl https://sdk.cloud.google.com | bash

Установка не должна работать как CLOUDSDK_PYTHON=python2 по умолчанию, что приводит к Python 2.6. Чтобы исправить это, введите эту команду:

export CLOUDSDK_PYTHON=python

это связывает CLOUDSDK_PYTHON с Python 3.6

тогда

bash google-cloud-sdk/install.sh

и наконец

./google-cloud-sdk/bin/gcloud init

Как только это будет сделано, вы можете использовать любую команду gcloud или gsutil, выполнив следующие действия:

./google-cloud-sdk/bin/gcloud <your gcloud command>
./google-cloud-sdk/bin/gsutil <your gsutil command>

Например, чтобы скопировать папку из корзины gs в ваш экземпляр ec2:

./google-cloud-sdk/bin/gsutil -m cp -r gs://<bucket_name>/path/to/folder /path/on/your/ec2/instance

опция -m обеспечивает быструю передачу (с этой опцией я могу передавать со средней скоростью 81 МБ/с)

Надеюсь это поможет !

person Sam Delalez    schedule 14.05.2020
comment
Привет Сэм, отличный первый ответ! Просто разместите его там, чтобы прочитать ответы на вопросы на случай, если вы что-то пропустили. Удачной работы и удачного кодирования! - person Diggy.; 14.05.2020

Эта решенная проблема:

export CLOUDSDK_PYTHON=python
person Abhijeet Ashok Muneshwar    schedule 12.10.2020