gcloud命令说 "pyenv: python2: command not found",即使python2在终端是有效的。

10 人关注

我使用的是macOS Mojave 10.14.2,和pyenv 1.2.7。

而这些是我对pyenv的配置。 python2似乎可以在终端中工作。

$ pyenv versions
  system
* 2.7.14
3.6.4
$ pyenv global
2.7.14
3.6.4
$ pyenv local
2.7.14
$ python2
Python 2.7.14 (default, Sep 12 2018, 16:35:37)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> (It works!)

但当我使用gcloud命令时,它失败了,说它找不到python2。

$ gcloud config list
pyenv: python2: command not found
The `python2' command exists in these Python versions:
  2.7.14

另一方面,npm命令,也需要python2,工作正常。

它被pyenv shell命令暂时修复了,但它只在我关闭终端之前有效。 (解决方案参考这里:https://github.com/pyenv/pyenv/issues/1159)

$ pyenv shell 2.7.14 3.6.4
$ gcloud config list -> Works!

如何永久地解决这个问题?

2 个评论
macos
python-2.7
google-cloud-platform
gcloud
Taichi
Taichi
发布于 2019-01-22
2 个回答
rgutierrez1014
rgutierrez1014
发布于 2021-01-12
0 人赞同

我最近遇到了这个错误,并找到了解决办法。我正在使用带有虚拟环境的pyenv(pyenv-viritualenv),我试图从我的python 3虚拟环境中运行 gcloud

问题是,当你从virtualenv中的某个位置运行 gcloud 时,它只知道该目录的 .python-version 文件中指定的python版本。因此,你必须在你的python 3版本之外再指定一个python 2版本来运行。

pyenv local <virtualenv name> <python 2 version>

我除了做其他相关问题的答案中提到的CLOUDSDK_PYTHON位之外,还做了这个。