Переключение между 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.