macos - 即使 python2 在终端中有效,gcloud 命令也会显示 `pyenv: python2: command not found`

标签 macos python-2.7 google-cloud-platform gcloud

我使用的是 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/

相关文章:

python - 在Python中将字符串转换为JSON

google-compute-engine - 无法使用 sshfs 在 Google Compute Engine 上挂载目录

google-cloud-platform - GCP端点和Apigee有什么区别

firebase - 由于 CNAME 中的下划线,无法使用 Google 域设置 SendGrid

objective-c - NSCollectionView 网格只显示一行

macos - 在 Mac OSX Lion 中,如何使用 sed 将多个空格替换为单个空格?

python-2.7 - 如何在 Pandas 中删除两个数据框中的公共(public)行?

python - docx 在 python 中列出

swift - 将框架/包添加到 Kitura macOS

macos - Mac OS X 中的自动布局警告