我使用的是 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!
如何永久解决这个问题?
最佳答案
我最近遇到了这个错误并找到了解决方案。我正在使用 pyenv 和虚拟环境(pyenv-virtualenv),我试图运行 gcloud
从我的 python 3 虚拟环境内部。
问题是当您运行 gcloud
时从 virtualenv 中的某个位置,它只知道 .python-version
中指定的 python 版本该目录的文件。因此,除了 python 3 版本之外,您还必须指定要运行的 python 2 版本:
pyenv local <virtualenv name> <python 2 version>
除了执行其他相关问题的答案中提到的 CLOUDSDK_PYTHON 位之外,我还这样做了:
export CLOUDSDK_PYTHON=$(which python2)
我将此添加到我的
.bash_profile
关于macos - 即使 python2 在终端中有效,gcloud 命令也会显示 `pyenv: python2: command not found`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300568/