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