【问题标题】:Is there any way to use gcloud with python3?有没有办法将 gcloud 与 python3 一起使用?
【发布时间】:2016-11-01 23:15:41
【问题描述】:

我对 gcloud 和 python3 有点困惑

在 python3 环境中安装 gcloud 并尝试以 Quickstart for Python in the App Engine Flexible Environment 为例。

它说“您需要 Google Cloud SDK”,所以我安装了 SDK。 SDK之后的所有流程(包括SDK),都需要python2 env。

这里有个问题,用python3(官方)运行gcloud是不可能的吗? (SDK 和带有 gcloud 库的 python2 是最好的方法吗?)

【问题讨论】:

    标签: python google-app-engine google-cloud-platform gcloud


    【解决方案1】:

    系统要求明确表示python 2.7.x https://cloud.google.com/sdk/downloads

    为什么还要用 python3 运行 gcloud?

    【讨论】:

    • 谢谢你的回答,我想如果我要使用GCP,我应该安装gcloud library和SDK。 gcloud library页面的底部,有一个python3。所以,我认为 python 3 的存在还有其他一些我不知道的原因。但是,如果我安装 SDK,就没有理由安装 pip install --upgrade gcloud 对吗? :)
    • gcloud 库似乎是一个连接器,如果您不想要,则不需要使用它。它还取决于您使用的是 GCP 的哪个部分,例如使用 appengine,您可以跳过 gcloud SDK 并使用 appengine SDK。 Gcloud SDK 本身有更多的功能,因为它也用于 GCE、GKE 等
    • 我的原因是它是我最后一个仍然需要旧版 Python 的工具 :) 其他一切都已经在 Python 3 上运行
    • @marcadian 因为所有新版本都将在 python 3 中,在最新和更稳定的 python 版本上没有意义?为什么我不明白为什么谷歌还不支持这个跨度>
    【解决方案2】:

    gcloud-pythongcloud-cli as in Cloud SDK 是一些无关的产品。确实,您需要 python 2.7.x 来运行 gcloud-cli,但这并不妨碍您将 python3 与 gcloud-python 库一起使用。

    例如,如果您安装了多个版本的 python 2.7x 和 3.5(您甚至可以将 python3 设为默认),只要您将 CLOUDSDK_PYTHON 环境变量设置为指向 python 2.7.x 解释器,您应该能够运行 gcloud-cli 而为您的项目使用 python3。

    例如,在 Windows 上,Cloud SDK 会打包自己的 python,它不会与您系统上可能拥有的任何其他版本冲突。它是 gcloud-cli 的纯运行时依赖。

    【讨论】:

    • 感谢您的回答,我知道“gcloud”这个概念只是连接器,我可以在我的 python 脚本中使用它来控制 GCP 环境。
    【解决方案3】:

    我通过指定 Python 2 的路径(我在我的系统上命名为 python2)解决了这个问题。

    $ export CLOUDSDK_PYTHON=$(which python2)
    $ ./install.sh
    

    我建议将导出添加到您的 .bashrc.zshrc 文件中。

    【讨论】:

    • 安装后,当您运行gcloud 时,它实际上会在后台调用which python2。因此,如果上述方法有效,则无需在 .bashrc 中设置此环境变量。另一方面,如果 python2 不在路径上,则应显式将 env 变量设置为其完整路径。
    • 谢谢@mmla 和@cherba!首先,我用你的提示安装了 gcloud。然后我尝试更新我的 gcloud 组件,它再次抱怨“python3 无法打开,因为无法验证开发人员。”所以我将 export CLOUDSDK_PYTHON=$(which python2) 添加到我的 .zshrc 的末尾,它又可以工作了!
    • 困惑,这对 python3 没有帮助?我猜如果你安装了 python2 和 python3 就可以了。不过,JCottons 更正确。
    【解决方案4】:

    install.sh 中,它说支持python3 但不优先考虑,因为我认为python 2 更普遍。这意味着如果你运行的是 macOS,通过echo "export CLOUDSDK_PYTHON=/your/path/to/python3" >> ~/.bash_profile 添加一行环境变量将允许 gcloud 使用任何 python3 所在的位置。

    如果它不起作用,那么将它指向任何一个 python 2 并且只将 python 3 用于你自己的工作应该可以解决问题。

    # if CLOUDSDK_PYTHON is empty
    if [ -z "$CLOUDSDK_PYTHON" ]; then
      # if python2 exists then plain python may point to a version != 2
      if _cloudsdk_which python2 >/dev/null; then
        CLOUDSDK_PYTHON=python2
      elif _cloudsdk_which python2.7 >/dev/null; then
        # this is what some OS X versions call their built-in Python
        CLOUDSDK_PYTHON=python2.7
      elif _cloudsdk_which python >/dev/null; then
        # Use unversioned python if it exists.
        CLOUDSDK_PYTHON=python
      elif _cloudsdk_which python3 >/dev/null; then
        # We support python3, but only want to default to it if nothing else is
        # found.
        CLOUDSDK_PYTHON=python3
      else
        # This won't work because it wasn't found above, but at this point this
        # is our best guess for the error message.
        CLOUDSDK_PYTHON=python
      fi
    fi
    

    【讨论】:

      【解决方案5】:

      截至2019-12-17,版本274.0.0正式支持Python 3。Release notes:

      Cloud SDK 现在对 Python 3 具有 GA 支持。请运行 gcloud topic startup 以获得:

      • 有关配置 Cloud SDK 使用的 Python 解释器的信息。
      • Cloud SDK 中仍需要 Python 2.7 解释器的工具列表。
      • Python 3 支持的已知问题列表。

      (该命令显示dev_appserverendpointscfg 是例外。)

      根据搜索顺序,如果 gcloud 找到它,它仍然会使用 Python 2。您可以通过将CLOUDSDK_PYTHON=python3(或类似的)设置为环境变量来明确。

      【讨论】:

        猜你喜欢
        • 2018-03-15
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多