#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, и это мой системный python4. Похоже, что
pyenv
это полезно, только если я использую его для установки python, в противном случае это бессмысленно.5. Вы можете установить другую версию либо глобально, выполнив
pyenv global python_version
, либо локально в папке вашего проекта, выполнивpyenv local python_version
.Airflow
устанавливается как пакет python, поэтому, если вы укажете конкретную версию python, на которуюAirflow
следует установить, и создадитеvirtualvenv
илиvenv
и установитеAirflow
в этой виртуальной среде, pyenv может удовлетворить ваши потребности.