Pyenv не удалось обнаружить установленные версии python в macOS Catalina

#python #macos #zshrc #pyenv

#python #macos #zshrc #pyenv

Вопрос:

У меня есть macOS Catalina, и я пошел дальше и сделал brew install для последней версии python 3.8.5. Затем я обнаружил pyenv и установил это также. Я выполнил шаги на https://github.com/pyenv/pyenv#basic-github-checkout из номера 3, но по-прежнему не вижу никаких версий python в pyenv .

У меня есть оба файла .zprofile и .zshrc, и мне интересно, вызывает ли это проблемы. Вот мой echo $PATH

 /Users/pq0252/.pyenv/shims/shims:/Users/pq0252/.pyenv/shims/shims:/Users/pq0252/.pyenv/shims:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 
  

Вот вывод версии pyenv:

 pyenv versions
* system (set by /Users/pq0252/.pyenv/shims/version) 
  

Вот .zprofile содержимое —

  #Setting PATH for Python 3.8.   
 #The original version is saved in .zprofile.pysave.   
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"   
export PATH 
  

Вот .zshrc содержимое (похоже, это повторяет if условие, хотя я добавил его только один раз, что, как я думаю, имеет какое-то отношение к шагу 3 на pyenv github, где мы добавляем к нему?).

 export PYENV_ROOT="$HOME/.pyenv/shims"
export PATH="$PYENV_ROOT:$PATH"
export PIPENV_PYTHON="$PYENV_ROOT/python"
echo -e 'if command -v pyenv 1>/dev/null 2>amp;1; thenn  eval "$(pyenv init -)"n$
if command -v pyenv 1>/dev/null 2>amp;1; then
  eval "$(pyenv init -)"
fi
if command -v pyenv 1>/dev/null 2>amp;1; then
  eval "$(pyenv init -)"
fi
  

Должен ли я удалить записи в .zshrc и вместо этого добавить все в .zprofile или есть что-то еще, чего мне не хватает? python3 --version действительно показывает 3.8.5.

Комментарии:

1. Вы установили версию pyenv, запустив pyenv install python_version_to_install ?

2. @harryghgim, который я использовал brew для его установки, а затем отсюда — github.com/pyenv/pyenv#installation

Ответ №1:

Вот что я вижу при запуске pyenv versions

 ➜  ~ pyenv versions
* system (set by /Users/gwanghyeongim/.pyenv/version)
  3.7.6
  3.7.7
  

И это то, что у меня есть в моем .zshrc файле.

 # pyenv config
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>amp;1; then
  eval "$(pyenv init -)"
fi
  

Ваш PYENV_ROOT и PATH в .zshrc выглядит странно. Согласно руководству по установке, они должны выглядеть примерно так, как указано выше. Сделайте их такими, как указано выше.

Кажется, что вместо запуска echo -e 'if command -v pyenv 1>/dev/null 2>amp;1; thenn eval "$(pyenv init -)"nfi' >> ~/.zshrc в терминале вы вводите его .zshrc напрямую. Удалите начальный блок кода echo -e и вместо этого запустите код в терминале. Тогда ваш .zshrc будет выглядеть как-то выше.

Теперь попробуйте запустить pyenv install version_to_install , где version_to_install — это python, который вы хотите установить с помощью pyenv. Для примера

 pyenv install 3.7.7
  

Затем он установит конкретную версию. После установки запустите pyenv versions еще раз и посмотрите, видите ли вы установленную версию python в списке.

Комментарии:

1. Итак, я уже установил python 3.8.5 с помощью brew и я просто хочу pyenv обратиться к нему, я не хочу его переустанавливать.

2. Я получаю /Users/pq0252/.pyenv/shims:/Users/pq0252/.pyenv/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin доступ echo $PATH после внесения предложенных вами изменений, но я все еще не вижу pyenv versions отображения версии python.

3. если вы хотите видеть 3.8.5 при запуске pyenv versions , вам необходимо установить его с помощью pyenv install . Системные версии python (версия, которая у вас уже была до установки pyenv) будут отображаться так же, как system . Я использую python 3.8.5, установленный brew, и это мой системный python

4. Похоже, что pyenv это полезно, только если я использую его для установки python, в противном случае это бессмысленно.

5. Вы можете установить другую версию либо глобально, выполнив pyenv global python_version , либо локально в папке вашего проекта, выполнив pyenv local python_version . Airflow устанавливается как пакет python, поэтому, если вы укажете конкретную версию python, на которую Airflow следует установить, и создадите virtualvenv или venv и установите Airflow в этой виртуальной среде, pyenv может удовлетворить ваши потребности.