Переключение между python 2.7 и python 3.5 в Mac OS X

Я обычно использую Python 2.7, но недавно установил Python 3.5 с использованием Miniconda в Mac OS X. Для этих двух версий python были установлены разные библиотеки. Теперь, ввод любого из ключевых слов "python" или "python3" в терминале вызывает python 3.5, а "python2" возвращает "-bash: python2: команда не найдена". Как я могу теперь вызывать их специально, используя псевдонимы "python2" и "python3" соответственно?

Я в настоящее время использую OS X El Capitan.

7 ответов

ИМХО, лучший способ использовать два разных python versions на MacOS через homebrew, После установки homebrew на macOS выполните команды ниже на своем терминале.

brew install python@2
brew install python

Теперь вы можете запустить Python 2.7, вызвав python2 или Python 3, вызывая python3, В дополнение к этому вы можете использовать virtualenv или pyenv для управления разными версиями python сред.

Я никогда не использовал лично miniconda но из документации, похоже, что это похоже на использование pip а также virtualenv в комбинации.

Python для OSX (версия 2) находится по адресу /usr/bin/python

если вы используете which python он скажет вам, где python команда решается в. Как правило, что происходит, когда третьи стороны переопределяют вещи в /usr/local/bin (который имеет приоритет, по умолчанию над /usr/bin). Чтобы исправить, вы можете запустить /usr/bin/python напрямую использовать 2.x или найти ошибочное переопределение (возможно, в /usr/local/bin или где-то еще в вашем PATH)

У меня уже был установлен python3 (через miniconda3), и в этом случае мне нужно было установить python2. brew install python не будет устанавливать python2, так что вам нужноbrew install python@2,

Теперь псевдоним python2 ссылается на python2.x из /usr/bin/python

и псевдоним python3 ссылается на python3.x из /Users/ishandutta2007/miniconda3/bin/python

и псевдоним python по умолчанию ссылается на python3.

Теперь использовать python в качестве псевдонима для python2 я добавил следующее .bashrc файл

alias python='/usr/bin/python',

Чтобы вернуться к python3 по умолчанию, просто удалите эту строку при необходимости.

Подобно ответу Джона Уилки, я бы запустил python2, найдя which pythonчто-то вроде использования /usr/bin/python а затем создать псевдоним в .bash_profile:

alias python2="/usr/bin/python"

Теперь я могу запустить Python3, позвонив python и python2, позвонив python2,

Как установить обратно версию Python 2.7, если вы установили Anaconda3 (Python 3.6) на MacOS High Sierra 10.13.5

Отредактируйте файл.bash_profile в вашем домашнем каталоге.

vi $ HOME /.bash_profile

хэшируйте строку # export PATH="/Users/YOURUSERNAME/anaconda3/bin:$PATH"

Снова закройте оболочку, вы увидите 2.7 при запуске python.

Тогда, если вы хотите 3.6, вы можете просто раскомментировать свою линию anaconda3 в своем профиле bash.

Попытка отсоединить python закончится слезами в Mac OSX.

Вы будете что-то вроде этого

unlink: /usr/bin/python: операция не разрешена

Надеюсь, что это поможет кому-то!!:):)

Если вы хотите использовать системную установку Apple Python 2.7, имейте в виду, что она не совсем соответствует стандартам именования, изложенным в PEP 394.

В частности, он включает необязательные символические ссылки с суффиксом 2.7 что вам сказали не полагаться, и не включает рекомендуемые символические ссылки с суффиксом 2 что тебе сказали, что ты должен положиться.


Если вы хотите это исправить, придерживаясь Apple Python, вы можете создать свои собственные символические ссылки:

$ cd <somewhere writable and in your PATH>
$ ln -s /usr/bin/python python2

Или псевдонимы в вашей конфигурации bash:

alias python2 python2.7

И вы можете сделать то же самое для Apple 2to3, easy_install и т. Д., Если они вам нужны.

Вы не должны пытаться поместить эти символические ссылки в /usr/binи определенно не пытайтесь переименовать то, что уже есть, или изменить настройку distutils на что-то более PEP-совместимое. Все эти файлы являются частью ОС и могут использоваться другими частями ОС, и ваши изменения могут быть перезаписаны даже при незначительном обновлении с 10.13.5 до 10.13.6 или чем-то еще, поэтому оставьте их в покое и обходите их как описано выше.


В качестве альтернативы вы можете:

  • Просто используйте python2.7 вместо python2 в командной строке и в ваших shbangs и так далее.
  • Используйте виртуальные среды или среды conda. Глобальный python, python3, python2и т.д. не имеет значения, когда вы всегда используете локальную активированную среду python,
  • Прекратите использовать Apple 2.7 и установите вместо нее еще 2.7, как и большинство других ответов. (Я не знаю, почему так много из них также предлагают установить вторую версию 3.6. Это просто добавит еще больше путаницы, без пользы.)

Я просто следую за ответом от @John Wilkey.

Мой псевдоним python используется для представления python2.7 (находится в /usr/bin). Однако по умолчанию python_path теперь предшествует /usr/local/bin за python3; следовательно, при наборе pythonЯ не получил ни версию Python.

Я пытался сделать ссылку в /usr/local/bin за python2:

ln -s /usr/bin/python /usr/local/bin/

Работает при звонке python за python2,

Запуск этих в этом порядке python в Python 2:

brew install python
brew install python@2

Вы все еще можете использовать pip3 а также python3 для Python 3.

Другие вопросы по тегам