我对使用Python3中的gcloud有些困惑。
在我安装了Python3环境下的gcloud之后,我尝试运行App Engine柔性环境中的Python快速入门示例。
它说“你需要Google Cloud SDK”,所以我安装了SDK。安装完SDK后的整个过程(包括SDK),都需要在Python2环境下运行。
这里有一个问题,是否无法(官方)使用Python3运行gcloud?(SDK和Python2与gcloud库一起使用是最好的方法吗?)
我对使用Python3中的gcloud有些困惑。
在我安装了Python3环境下的gcloud之后,我尝试运行App Engine柔性环境中的Python快速入门示例。
它说“你需要Google Cloud SDK”,所以我安装了SDK。安装完SDK后的整个过程(包括SDK),都需要在Python2环境下运行。
这里有一个问题,是否无法(官方)使用Python3运行gcloud?(SDK和Python2与gcloud库一起使用是最好的方法吗?)
我解决了这个问题,通过指定到Python 2的路径(我在系统上命名为python2
)。
$ export CLOUDSDK_PYTHON=$(which python2)
$ ./install.sh
我建议将导出命令添加到您的.bashrc
或.zshrc
文件中。
Cloud SDK现在已经支持Python 3的GA版本。请运行
gcloud topic startup
获取以下信息:
- 配置Cloud SDK使用的Python解释器的信息。
- 需要Python 2.7解释器的Cloud SDK工具列表。
- Python 3支持的已知问题列表。
(该命令显示dev_appserver
和endpointscfg
是例外情况。)
根据搜索顺序,如果gcloud找到Python 2,则仍将使用Python 2。您可以通过设置CLOUDSDK_PYTHON=python3
(或类似)作为环境变量来明确指定。
gcloud-python 和 Cloud SDK 中的 gcloud-cli 是两个没有直接关联的产品。虽然运行 gcloud-cli 需要 python 2.7.x,但这并不妨碍你在使用 gcloud-python 库时使用 python3。
比如,在你的系统上安装多个版本的 python,例如 2.7x 和 3.5(你甚至可以将 python3 设置为默认),只要设置 CLOUDSDK_PYTHON 环境变量指向 python 2.7.x 解释器,你就可以同时运行 gcloud-cli 并使用 python3 进行项目开发。
以 Windows 为例,Cloud SDK 包含了自己的 python,不会与你系统中的任何其他版本产生冲突,而且它只是 gcloud-cli 的纯运行时依赖。
install.sh
文件中,它说支持python3但并没有优先考虑,因为我认为python2更常见。这意味着如果你使用的是macOS,通过添加环境变量的一行echo "export CLOUDSDK_PYTHON=/your/path/to/python3" >> ~/.bash_profile
将允许gcloud使用任何已经安装在系统中的python3。# 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
系统要求明确指出需要使用 Python 2.7.x https://cloud.google.com/sdk/downloads
你为什么要用 Python3 运行 gcloud 呢?
pip install --upgrade gcloud
了,对吧? :) - piper
gcloud
时,它实际上在幕后调用which python2
。因此,如果上述操作成功,则无需在.bashrc
中设置此环境变量。另一方面,如果 python2 不在路径中,则应显式设置环境变量为其完整路径。 - cherba