[英]kubectl pyenv python version conflict
我试图在Mac上运行一些kubectl命令,在这里我使用pyenv来管理python版本。 每当我运行某些kubectl命令时,都会导致错误,其中kubectl指出找不到python2命令。
josh@venus:~/pjx/distribut_io ❯ kubectl get pods
Unable to connect to the server: error executing access token command "/Users/josh/google-cloud-sdk/bin/gcloud config config-helper --format=json": err=exit status 127 output= stderr=pyenv: python2: command not found
The `python2' command exists in these Python versions:
2.7.4
fp
josh@venus:~/pjx/distribut_io ❯ which python
/Users/josh/.pyenv/shims/python
josh@venus:~/pjx/distribut_io ❯ which python2
/Users/josh/.pyenv/shims/python2
我尝试将.python-version
更改为2.7.4,系统和其他几个版本,但似乎无法正常工作。 我迫切需要穿线,有人可以提供指导吗?
kubectl不需要Python,但是gcloud需要。
这是gcloud源代码的一部分(实际上是用bash编写的):
# CLOUDSDK_ROOT_DIR (a) installation root dir
# CLOUDSDK_PYTHON (u) python interpreter path
# CLOUDSDK_PYTHON_ARGS (u) python interpreter arguments
# CLOUDSDK_PYTHON_SITEPACKAGES (u) use python site packages
...
# Cloud SDK requires python 2.7
case $CLOUDSDK_PYTHON in
*python2*)
;;
*python[0-9]*)
CLOUDSDK_PYTHON=
;;
esac
# if CLOUDSDK_PYTHON is empty
if [ -z "$CLOUDSDK_PYTHON" ]; then
# if python2 exists then plain python may point to a version != 2
if which python2 >/dev/null; then
CLOUDSDK_PYTHON=python2
elif which python2.7 >/dev/null; then
# this is what some OS X versions call their built-in Python
CLOUDSDK_PYTHON=python2.7
else
CLOUDSDK_PYTHON=python
fi
fi
因此,检查环境变量以了解启动gcloud时发生的情况。
作为一个简单的解决方法,您可以使用自制软件安装python2,也可以仅创建一个symlink python2-> python:
sudo ln -s `which python` $(dirname `which python`)/python2
另一种方法是按照pyenv文档中的说明配置pyenv设置,以获取必要的python版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.