Mac gcloud install ImportError: No module named __future__

Mac gcloud install ImportError: No module named __future__

为 mac 安装 gcloud 时,根据文档 here:

运行 install.sh 命令时出现此错误
Traceback (most recent call last):
  File "/path_to_unzipped_file/google-cloud-sdk/bin/bootstrapping/install.py", line 8, in <module>
    from __future__ import absolute_import

我在安装 shell 脚本中浏览并重复了一些内容。它正在正确设置环境变量(指向我的默认 python 安装,指向 gcloud SDK 的正确位置)。

如果我只输入 python 解释器(使用安装脚本在 运行ning install.py 时指向的相同默认值 python),我可以导入模块就好了:

>>> from __future__ import absolute_import
>>> 

唯一值得注意的其他信息是我的默认 python 设置是我从 python 2.7.15 通过 brew 安装创建的虚拟环境。虚拟环境 python bin 位于我的 PATH 中的第一个,因此 pythonpython2 以及 python2.7 都调用了正确的二进制文件。到目前为止,我在此设置上安装软件包时没有遇到其他问题。

如果我回显调用 install.py 脚本的 install.sh 脚本的最后一行,它会显示 /path_to_virtualenv/bin/python -S /path_to_unzipped_file/google-cloud-sdk/bin/bootstrapping/install.py,这是正确的 python。还是我遗漏了什么?

脚本在启动时使用 -S command-line switch, which disables loading the site module

但是,它是安装在 virtualenv 中的自定义专用 site 模块,它使 virtualenv 工作。因此,-S 开关和 virtualenvs 不兼容,-S 设置基本导入,例如 from __future__ 完全崩溃。

您可以从 install.bat 命令中删除 -S 开关,或者使用包装脚本将其从命令行中删除,因为您调用真正的 virtualenv Python.

我在尝试 运行 gcloud 命令时遇到以下错误。

  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/gcloud.py", line 20, in <module>
    from __future__ import absolute_import
ImportError: No module named __future__

如果您的 virtualenv 是自动获取的,您可以指定环境变量 CLOUDSDK_PYTHONset -x CLOUDSDK_PYTHON /usr/bin/python 不使用 virtualenv python.

google-cloud-sdk/install.sh 中转到最后一行,如下删除变量 $CLOUDSDK_PYTHON_ARGS

"$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"

"$CLOUDSDK_PYTHON" "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"