kubectl pyenv конфликт версий Python - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь запустить некоторые команды kubectl на моем Mac, где я использую 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, system и пару другихверсии, и я не могу заставить это работать.Я умираю от желания натянуть нить, кто-нибудь может указать направление?

1 Ответ

0 голосов
/ 30 мая 2018

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 с помощью homebrew или просто создать символическую ссылку python2 -> python:

sudo ln -s `which python` $(dirname `which python`)/python2

Другой способ - настроить параметры pyenv, как описано в Документация pyenv , чтобы получить необходимые версии python.

...