Конечно, Homebrew - это здорово, но вы все равно можете иметь надежную среду Python на Mac и без него.
Недавно я обнаружил, что настраиваю новый MacBook Pro для разработки на Python. В Интернете есть множество документации по установке pyenv на Mac, но, похоже, все они сосредоточены на установке через Homebrew. Что ж, это был не вариант для меня, поэтому ниже я описал шаги, которые я предпринял для установки pyenv без Homebrew.
TL;DR
Выполните следующую команду, чтобы установить pyenv.
% curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Если pyenv по-прежнему не находится на вашем пути, и вы используете последнюю версию MacOS, выполните следующие команды в Терминале.
% PYENV_ROOT="${HOME}/.pyenv" % echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\"" >> ~/.zshrc % echo "eval \"\$(pyenv init -)\"" >> ~/.zshrc % echo "eval \"\$(pyenv virtualenv-init -)\"" >> ~/.zshrc
Мои характеристики
Я использовал этот метод для установки pyenv на MacBook Pro 2020 года под управлением macOS Catalina.
Использование pyenv-installer
Если вы не хотите использовать Homebrew для установки pyenv, разработчик проекта также предоставляет проект pyenv-installer. Это предоставляет сценарий установки с простой командой bash, которая выполняет установку за вас.
В документации к этому проекту написано, что нужно запустить curl https://pyenv.run | bash
, но это дало мне ошибку сертификата.
Есть два способа обойти это. Путь наименьшего сопротивления - использовать флаг -k
(не проверять сертификаты) в команде curl
. Более безопасный вариант - просто вызвать команду, на которую сценарий pyenv.run
перенаправляет вас, которая указывает на GitHub и имеет безопасный сертификат. Чтобы сделать это вместо этого, запустите:
% curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Эта команда загружает файл установщика и передает файл установщика в bash. Другими словами, он запускает файл в оболочке bash.
Добавление pyenv в путь
К сожалению, использованная нами команда установщика не может успешно добавить pyenv к вашему пути. Это связано с передачей команд в оболочку bash. Начиная с macOS Catalina, Apple начала использовать Zsh (произносится как Z Shell) вместо bash в качестве терминала по умолчанию (источник). Поэтому, когда мы передаем команду в bash, он не знает, что нужно обновить конфигурацию для Zsh.
Простым способом исправить эту ситуацию было бы просто не передавать команду в bash, а вместо этого запускать ее в Zsh. У скрипта есть встроенная логика для обновления профиля Zsh, если он может надлежащим образом определить, что он запущен. Однако, если вы похожи на меня и уже запустили установщик, приведенные ниже шаги исправят ситуацию и добавят pyenv в путь.
Чтобы добавить путь к Zsh, нам нужно выполнить следующие команды, чтобы добавить pyenv в файл конфигурации оболочки.
% PYENV_ROOT="${HOME}/.pyenv" % echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\"" >> ~/.zshrc % echo "eval \"\$(pyenv init -)\"" >> ~/.zshrc % echo "eval \"\$(pyenv virtualenv-init -)\"" >> ~/.zshrc
Это добавит программу к вашей переменной пути. Отсюда вы можете перезапустить свой терминал и начать использовать pyenv.
Начать использовать pyenv
Установив pyenv, я использовал его для установки последней версии Python. На момент написания это Python 3.8.3. Для установки я запустил:
% pyenv install -v 3.8.3
На этом этапе, если вы проверите свою версию Python, вы все равно увидите версию по умолчанию. В моей системе это выглядело так:
% python -V Python 2.7.16
Мы должны сообщить системе, какую версию Python мы хотим использовать. Сначала мы можем перечислить версии Python, доступные через pyenv, а затем мы можем сказать pyenv установить глобальную версию на предпочтительную версию. В данном случае это 3.8.3.
% pyenv versions * system (set by /Users/snolesmuth/.pyenv/version) 3.8.3 % pyenv global 3.8.3 % python -V Python 3.8.3
Как только мы скажем Python использовать более новую версию, мы можем запустить команду Python как обычно, но pyenv перенаправит на указанную нами версию.
Заключение
Pyenv - невероятно мощный инструмент, позволяющий использовать отдельные установки Python для разных пользователей, проектов или папок по мере необходимости, не полагаясь на устаревшую версию macOS по умолчанию.