Как понизить версию python mac os

Менеджер версий python

Иногда полезно держать несколько версий python на одной машине. Допустим для разработки двух проектов нам необходима вторая и третья ветка python. Или вы поддерживаете проект который использует старую версию python.

Обычно для этого мы используем виртуальное окружение virtualenv или же обертку для него virtualenvwrapper. Об этом я рассказывать не буду, так как есть уже много подобных статей, да и в документациях к самим утилитам все очень хорошо объяснено. Достаточно только забить virtualenv или virtualenvwrapper в поисковик.
Но в дополнение к ним я хочу рассказать в этой статье про менеджер версий python. Кому любопытно прошу под кат.

Чтобы использовать несколько версий python, можно установить их вручную или воспользоваться менеджер версий. Таких есть два: pythonbrew(который более не развивается) и pyenv. Оба менеджера не поддерживают windows(pythonbrew, pyenv) так что питонистам пишущим на этой платформе, придется пока разруливать все руками, либо сделать свою утилиту для смены путей до нужных версий. Кто как справляется с данной ситуацией можете оставлять в комментариях.
Так как pythonbrew более не поддерживается в этой статье он рассмотрен не будет.

P.S. В статье приведены примеры проверенные для OS Ubuntu 12.04. При попытке повторить их, делайте поправки относительно своего дистрибутива.

Ручной способ

Для того чтобы работать с несколькими версиями питона, можно установить необходимые версии в указанный префикс. Например чтобы не мудрить с правами, установим дополнительно 2 версии python(2.7.6 и 3.3.2) в директорию пользователю:
2.7.6

для 3.3.2 делаем аналогичные операции:

Теперь можно создать виртуальное окружение чтобы использовать эти версии:

или через virtualenvwrapper:

Собственно на основании такого способа описана статья по созданию мультихостинга.
Далее если вам необходимо использовать какую-то из этих версий как python по умолчанию, то вам необходимо добавить в переменную окружения путь до интерпретатора python.

Соответственно вместо bashrc вы ставите bash_profile, zshrc, kshrc, profile в зависимости от вашей командной оболочки.

И по необходимости можно установить pip, предварительно установив setuptools.

Фух, ну вроде бы все. А теперь о том как можно сделать это проще использую менеджер версий python.

PyEnv

В общем если вы достаточно ленивы, то можно не делать всего того что описано выше а воспользоваться утилитой pyenv, которая упростит вам данное взаимодействие с окружением и путями.

Так в чем же заключается особенность этой утилиты? Вот что она может со слов автора проекта:

  • Let you change the global Python version on a per-user basis.
  • Provide support for per-project Python versions.
  • Allow you to override the Python version with an environment variable.
  • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

По умолчанию все версии Python будут доступны в

/.pyenv/versions/ . Изменять версии Python можно как в глобальном контексте так и в локальном(например под конкретный проект).

Как ставить pyenv хорошо описывается в инструкции. Так же у автора есть скрипт который по мимо самой pyenv ставит еще и дополнительные плагины, в том числе и для virtualenv. Есть возможность установить плагин и для virtualenvwrapper.

Прежде чем начать установку, убедитесь, что у вас установлен git:

Далее устанавливаем по инструкции:

Во втором случае установка произойдет с дополнительными плагинами.
Далее, для того чтобы все заработало, дополним наш bashrc и перезагрузим оболочку:

Для обновления утилиты или смены ее версии используем git.

Для управления версиями pyenv необходимо перейти в директорию с утилитой:

Для просмотра доступных версий:

для смены версии

Пример использования

В добавок ко всему все довольно подробно и детально расписано у автора проекта в его репозиториях на github.

Виртуальное окружение

Все, а дальше как хотите. Если вы используете 3 ветку python то для создания виртуального окружения можно воспользоваться утилитой venv которая работает из коробки. Про это есть статья на хабре. Если вы больше привыкли к virtualenv или ее обертке virtualenvwrapper то тут есть два варианта: либо поставить плагин к pyenv, или использовать их к той версии python c которой вы работаете. Соответственно если выбрать первый вариант, то созданные вами окружения будут добавлены к вашим версиям python и доступны через команду:

Читайте также:  Операционная система dos linux windows сравнение

Добавить плагин легко, просто клонируем его из репозитория pyenv-virtualenv или pyenv-virtualenvwrapper:

Пример использования можно посмотреть в документации для pyenv-virtualenv и pyenv-virtualenvwrapper.
Все, а дальше пользуйтесь, как вам привычнее.

Пример использования

Теперь находясь в директории проекта можно запускать скрипт от нужной версии python не прилагая никаких действий. pyenv создает в директории файл .python-version который содержит в себе информацию о том какую версию python с каким окружение использовать для данного проекта.

Источник

Как установить Python 3 на macOS в качестве версии по умолчанию

Есть несколько способов начать работу с Python 3 на macOS, однако не все они одинаково хороши. Сегодня мы рассмотрим, как правильно настроить среду, не нарушая ничего, встроенного в операционную систему macOS.

1. Установите pyenv

Использование неправильного решения может привести к неверному представлению о том, что выбор загружаемой версии Python зависит от псевдонимов в оболочке.

Как нам перестать заботиться о том, какая версия Python используется по умолчанию? Нужно использовать pyenv. Это инструмент для управления несколькими версиями Python. Он простой и вполне соответствует традициям Unix: предназначен для решения одной задачи, и решает ее хорошо.

Хотя доступны и другие варианты установки, проще всего начать следующим образом:

2. Установите Python

Теперь давайте установим последнюю версию Python (здесь указана версия 3.7.3, однако на данный момент широко используется версия 3.8 и доступна версия 3.9):

3. Установите глобальное значение по умолчанию

Теперь, когда Python 3 установлен через pyenv, мы хотим установить его как нашу версию по умолчанию (глобально) для сред pyenv:

Сила pyenv основана на том, что он контролирует путь нашей оболочки. Чтобы он работал правильно, нам нужно добавить следующее в наш файл конфигурации (мы использовали .zshrc, а вам, возможно, подойдет .bash_profile):

После этой команды наш файл (.zshrc для zsh или .bash_profile для Bash) должен включать следующие строки:

Теперь мы точно знаем, что используем Python 3.7.3, и pip будет обновляться вместе с ним без какой-либо ручной настройки и конфликтов между версиями. Использование менеджера версий (pyenv) позволяет нам легко регулировать будущие обновления, не беспокоясь о том, какую версию Python мы используем в данный момент.

Успешный результат

Освоив этот рабочий процесс, вы сможете использовать pyenv для управления несколькими версиями Python.

Для управления зависимостями также важно использовать виртуальные среды. Тут нам пригодятся такие встроенные библиотеки, как venv и virtualenvwrapper.

Среда выполнения Python

Теперь, когда мы разобрались с версиями Python, можно углубиться в вопрос, почему эта проблема сбивает с толку так много людей.

Версия Python, поставляемая с macOS, сильно устарела по сравнению с тем, что Python рекомендует использовать для разработки. Как отмечает XKCD, размышления о выборе среды выполнения Python иногда могут быть до смешного сложными:

Многие пользователи держат десятки интерпретаторов Python на своих компьютерах, хотя понятия не имеют, как эффективно ими управлять.

Слишком часто люди просто загружают последнюю версию Python, помещают ее в свою переменную $PATH и на этом всё (или используют команду brew install python3 , которая делает примерно то же самое). Это может привести к поломкам и неисправностям, которые будет весьма сложно исправить.

Чего не стоит делать

Можно подумать, что, чтобы сделать Python 3 на macOS версией по умолчанию, нужно заменить старую версию и на новую:

Этот шаблон соответствует тому, что обычно делает /usr/bin/ между основными выпусками Python, однако это неправильный ход:

К счастью, macOS не дает сломать систему непродуманными действиями. Дальнейшие исследования вопроса показывают, что описанный выше способ не следует применять.

Что можно попробовать

Теперь, когда мы знаем, чего не следует делать, давайте посмотрим, что сделать можно. Когда мы думаем об общих шаблонах установки приложений в macOS, есть несколько вариантов.

Использовать Python 3 по умолчанию для macOS

На веб-сайте Python есть установщик macOS Python 3, который мы можем загрузить и использовать. Если мы воспользуемся установкой пакета, python3 будет доступен в /usr/local/bin/.

Поскольку двоичный файл Python, хранящийся в /usr/bin/, не может быть изменен, необходимы алиасы (псевдонимы). Что хорошо в псевдониме, так это то, что он специфичен для нашей оболочки командной строки. Поскольку по умолчанию мы используем zsh, мы помещаем в файл .zshrc следующее:

Если по умолчанию вы используете оболочку Bash, вы можете добавить следующий текст в свой .bashrc :

Эта стратегия работает, но она не идеальна для будущих обновлений Python. Это означает, что нам придется регулярно проверять сайт и загружать новые файлы, поскольку Python не включает в себя способ обновления из командной строки.

Читайте также:  Windows server 2019 hyper v лицензия

Доверить управление Homebrew

Проект Homebrew предоставляет бесплатный менеджер пакетов для macOS, на который полагаются многие люди. Он имеет открытый исходный код. Этот менеджер пакетов дает пользователям Apple возможности, аналогичные возможностям apt-get или yum.

Если вы являетесь пользователем Homebrew, возможно, у вас уже установлен Python. Чтобы быстро проверить это, запустите конвейер команд:

Если в качестве результата вы получите python, значит, он установлен. Но какая это версия? Давайте проверим:

Отлично! Мейнтейнеры Homebrew обновили Python bottle (бинарный пакет), чтобы он указывал на последний релиз. Поскольку мейнтейнеры Homebrew более ответственны в отношении обновления релиза, чем большинство из нас, мы можем использовать версию Python 3 от Homebrew с помощью следующей команды:

Теперь нам нужно, чтобы наш алиас указывал на копию Python, которой управляет Homebrew:

Чтобы убедиться, что приведенный выше путь указывает на то место, куда Homebrew установил Python в нашей среде, мы можем запустить brew info python и поискать информацию о пути.

Этот метод использования Homebrew для управления нашей средой Python является хорошей отправной точкой.

Что делать, если нам все еще нужен Python 2?

Для любого новичка в Python имеет смысл начинать сразу с Python 3. Но те из нас, кому все еще нужен Python 2 – например, для участия в проекте, где есть только Python 2, – могут продолжать использовать версию Python, доступную в macOS по умолчанию (путь — /usr/bin/python):

Homebrew настолько хорош, что даже предлагает другую формулу для Python 2:

Чтобы вернуться к использованию версии Python, которая установлена в системе по умолчанию, в любой момент можно удалить псевдонимы из файла конфигурации нашей оболочки.

Не забудьте обновить pip до версии pip3!

pip – это дефолтный менеджер пакетов Python. Хотя мы изменили нашу дефолтную команду python на третью версию, нужно также отдельно задать псевдоним нашей команде pip (если у нас предыдущая версия).

Для начала нужно проверить, какая, собственно, у нас версия:

Чтобы устанавливать пакеты, наверняка совместимые с нашей новой версией Python, мы используем еще один алиас, указывающий на совместимую версию pip.

Поскольку в данной ситуации мы используем Homebrew в качестве менеджера пакетов, мы знаем, что он установил pip3 при установке Python 3. Путь по умолчанию должен быть таким же, как и в Python 3, но мы можем проверить это, попросив оболочку найти его:

Теперь, когда мы точно знаем местоположение, мы добавим его в наш файл конфигурации оболочки, как мы это делали раньше:

Наконец, мы можем проверить, что запущенный pip указывает на pip3. Для этого нужно открыть новую оболочку или перезагрузить текущую и посмотреть, на сто указывает псевдоним:

Мы можем избежать использования Homebrew для обновления pip, но для этого потребуется гораздо более подробное руководство, основанное на документации Python.

Заключение

Если вы только начинаете разработку на Python на macOS, выполните необходимые настройки, чтобы с самого начала использовать правильную версию Python.

Установка Python 3 с Homebrew или без него и использование псевдонима позволят вам начать программировать, но в долгосрочной перспективе это не лучшая стратегия.

Использование pyenv — простое решение для управления версиями. Оно станет отличной отправной точкой.

Источник

Как понизить версию Python с 3.8 до 3.7 (Mac)

Я использую инструменты Python и okta-aws, и для получения правильных учетных данных на aws мне нужно запустить okta-aws init. Но появилось сообщение об ошибке Could not read roles from Okta , и система предложила это «Your Pipfile requires python_version 3.7, but you are using 3.8.3 (/usr/local/Cellar/o/1.1.4/l/.venv/bin/python) .

Я попытался найти все Pip-файлы на компьютере Mac, и кажется, что все Pipflie под моими

/Pipfile и /usr/local/Cellar/python@3.8/3.8.3_2/libexec/bin/Pipfile имеют одну и ту же версию Python 3.8, в то время как Pipfile под моим /usr/local/Cellar/okta-aws-tools/1.1.4/libexec/Pipfile имеет required python_version = 3.7 .

Я боролся с этим некоторое время и действительно не уверен, как я могу это исправить.

2 ответа

Рассмотрите возможность установки pyenv с Homebrew на macOS

Клонируйте репозиторий, чтобы получить последнюю версию pyenv

Определите ваши переменные среды

Перезапустите вашу оболочку, чтобы изменения пути вступили в силу

Проверьте установку и проверьте доступные python версии

Установите требуемую версию python

Установите его как глобальную версию после установки

Проверьте вашу текущую python версию, которую использует система

Я рекомендую вам установить и использовать pyenv, систему управления версиями Python. После установки pyenv установите python 3.7:

Читайте также:  Создать загрузочный раздел windows

Затем установите для среды PYENV_VERSION версию Python, которую вы хотите использовать, в этом случае будет 3.7 :

Источник

MacOS: Как понизить доморощенный Python?

Я использую MacOS Sierra 10.12.4 и понял, что homebrew python был обновлён до версии 2.7.13. Как я могу вернуться к 2.7.10?

5 ответов

Во-первых, обычно считается плохой практикой полагаться на системный python для пользовательского кода земли, если вы можете этого избежать. Вы должны предположить, что системным утилитам требуется определенная версия системного Python, и ваш пользовательский код может быть привязан к этой версии Python навсегда, что нецелесообразно (если только вы не пишете системные утилиты, в этом случае просто используйте / bin / python, но тогда вы бы не задавали этот вопрос . ).

Во-вторых, мне непонятно, зачем вам 2.7.10 вместо 2.7.13. Все питоны с одинаковым младшим номером ревизии (2.7) должны всегда быть совместимыми. Если вам нужна версия 2.6, это будет другая история, поскольку это изменение в минорной версии. Код, написанный для 2.7.x, должен быть совместимым.

Тем не менее, предполагая, что ваш вариант использования действительно требует использования конкретной версии Python — сейчас вы получите реальное решение — убедитесь, что вы действительно обновили системный Python для начала. Если вы введете команду: which python , получите ли вы /usr/bin/python (система) или /usr/local/bin/python (заварите установленный пользовательский питон). Например, /usr/bin/python -V дает мне 2.7.10, хотя python -V дает мне 2.7.13 (через варево).

Возможно, вы установили последнюю версию python 2.7.x через brew , которая помещает /usr/local/bin/python в качестве символической ссылки в ваш $PATH , или, возможно, у вас есть псевдоним python , указывающий куда-то, на кого вы наделили не хочу Проверьте ваш заказ $ PATH.

Вы можете сбросить ваш доморощенный питон, удалив его ( brew uninstall python ) или изменив символическую ссылку ( ln -s -f /usr/bin/python /usr/local/bin/python ). Тем не менее, использование virtualenv устраняет необходимость во многих видах гимнастики.

Если вы хотите поэкспериментировать с предыдущими версиями Python, установленными через homebrew, этот ответ должен помочь: Как установить старую формулу с помощью Brew?

Последний вариант: если вам абсолютно необходима конкретная версия Python, pyenv может помочь.

Вы можете переключать версии с помощью brew switch . Например, я только что понизил Python 3.7.0 до 3.6.5 следующим образом:

К сожалению, команда brew versions устарела, и в настоящее время она довольно сложна, чтобы найти доступные версии. Я хотел бы услышать простое решение этого. Между тем, если вы знаете версию, на которую хотите переключиться, попробуйте указанную выше команду.

Я согласен с ответами здесь, что virtualenvs — хорошая идея, но хорошая версия Python, которая вам нужна для homebrew, также является хорошей идеей. То, как создавались мои virtualenv, bin/python было символической ссылкой на /usr/local/bin/python , поэтому все было плохо, когда Python обновлялся с помощью homebrew.

Установите его как обычный пакет.

Run cd /Library/Frameworks/Python.framework/Version

Запустите ls, и все установленные версии Python будут видны здесь.

Run sudo rm -rf 3.7

Проверьте версию сейчас python3 -V и теперь она будет 3,6.

Нет необходимости понижать python, так как вы можете использовать оба в своей системе.

Места, где вы хотите, чтобы ваш файл компилировался с python 2-x.

И где тебе нужен питон 3

Использование Python по умолчанию приведет к использованию последней версии, а переход на конкретную версию — большая головная боль, поскольку он не прямой, так как python не сделан обратно совместимым с 3-х до 2-х.

Это не прямой ответ на вопрос, скорее, оно объясняет решение, позволяющее избежать прикосновения к системному питону.

Общая идея заключается в том, что вы всегда должны устанавливать независимый питон для своих проектов. Каждый проект нуждается в своей собственной версии Python (по причинам совместимости с библиотеками), и нецелесообразно сохранять одну версию Python и пытаться заставить ее работать с несколькими проектами.

Я предполагаю, что эта проблема произошла в вашей системе, потому что для другого проекта требовалась более высокая версия Python, а теперь для вашего другого проекта вам нужна более низкая версия Python.

Лучший способ работать с версиями Python — использовать virtualenv.

Каждый проект будет иметь свой собственный python, поэтому у вас могут быть проекты, которые работают с python 2.7 и python 3, и они никогда не касаются зависимости друг друга.

Установите разные версии Python с homebrew, а затем для каждого проекта при создании virtualenv вы решаете, какой Python выбрать. Каждый раз, когда вы работаете с этим проектом, версия python будет той, которую вы выбрали сами, когда создавали virtualenv.

Источник

Оцените статью