Переключение между 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: command not found". Как я могу теперь вызывать их специально с использованием псевдонимов python2 и python3 соответственно?

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

Ответ 1

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

brew install [email protected]
brew install python

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

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

Ответ 2

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

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

Ответ 3

У меня уже был установлен python3 (через miniconda3) и мне нужно было установить python2 вместе с тем, в этом случае brew install python не установит python2, поэтому вам потребуется brew install [email protected].

Теперь псевдоним 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 по умолчанию, просто удалите эту строку при необходимости.

Ответ 4

Я просто отслеживаю ответ от @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.

Ответ 5

Как установить обратно версию 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: операция не разрешена

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

Ответ 6

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

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


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

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

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

alias python2 python2.7

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

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


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

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

Ответ 7

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

alias python2="/usr/bin/python"

Теперь я могу запустить python3, вызвав python и python2, вызвав python2.

Ответ 8

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

brew install python
brew install [email protected]

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