【问题标题】:Can't install gcloud on Amazon Linux : invalid syntax无法在 Amazon Linux 上安装 gcloud:语法无效
【发布时间】:2018-12-07 13:22:07
【问题描述】:

我正在尝试在运行 Amazon Linux 4.14.47-56.37 64 位的 EC2 服务器上安装 gcloud,以交互模式运行以下命令:

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

文件下载正确,但安装失败并出现以下 Traceback :

  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

知道为什么这会导致问题吗?

我正在按照 Google 的建议运行 python 2.7 (2.7.14)。

【问题讨论】:

  • 安装脚本似乎找到了不支持字典理解的 python 版本。您可能在2.7 之前找到了旧的python 安装(2.6 或更低版本)。当你运行python2 --version 时你看到了什么?甚至python --version?
  • 那个4.14.47-56.37是内核版本;您使用的是哪个发行版?它是 Amazon Linux 2 LTS 吗?如果您告诉我们,我们至少可以查找其中包含的所有内容的版本,而不必猜测。另外,您是从 Amazon Linux Extras 还是从非 Amazon 存储库获得内置 Python 2.7?
  • 我已经用 Python 2.7.13 尝试过,并且工作正常。如果您执行python --versionwhich python 是否指向正确的python 版本?
  • @Abdou 和 Miguel Ortiz :python --version 返回 2.7.14,并且哪个 python 确实指向这个 (/usr/bin/python),但 python2 --version 返回 2.6.9。这会导致问题吗?编辑:是的,它可以。我删除了 python 2.6 并且安装成功完成。
  • @abarnert :“Amazon Linux AMI 版本 2018.03”,是发行版吗?不是 Amazon Linux 2。得到了 yum 的 python,包 python27(这个版本的 Amazon Linux 内置了 yum)。

标签: python linux installation gcloud amazon-linux


【解决方案1】:

除了安装在“python”命令上的 python 2.7 之外,我还在“python2”命令上安装了 python 2.6。 卸载python 2.6解决了这个问题,下次尝试谷歌云安装没有问题。

【讨论】:

    【解决方案2】:

    您在本地更新 install.sh 文件以使用 python2.7 而不是 python2。这对我有用

    【讨论】:

    • 也为我工作。
    【解决方案3】:

    如果有人再次遇到此问题,并且您不想卸载 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 MiB/s 的平均速度进行传输)

    希望这会有所帮助!

    【讨论】:

    • 嗨,Sam,第一个答案很好!只要把它放在那里阅读answering questions,以防你错过任何东西。不过进展顺利,编码愉快!
    【解决方案4】:

    设置 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
    

    【讨论】:

      【解决方案5】:

      这个问题解决了:

      export CLOUDSDK_PYTHON=python
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2019-10-22
        • 2017-12-09
        • 2015-03-30
        • 1970-01-01
        • 2021-11-26
        相关资源
        最近更新 更多