Как установить версию Python по умолчанию 3.x на OS X?

329

У меня работает Mountain Lion, и основная версия Python по умолчанию - 2.7. Я скачал Python 3.3 и хочу установить его по умолчанию.

В настоящее время:

$ python
    version 2.7.5
$ python3.3
    version 3.3

Как настроить так, чтобы при каждом запуске $ pythonон открывал 3.3?

Маркус
источник
Возможный дубликат, как изменить версию Python по умолчанию?
Джерадж Вепакомма
Вы можете управлять версией Python с pyenv.
Шин Ким

Ответы:

580

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

Однако вы можете использовать псевдонимы команд в большинстве оболочек, поскольку оболочки по умолчанию в macOS (bash в 10.14 и ниже; zsh в 10.15) имеют похожий синтаксис. Вы могли бы поместить псевдоним python = 'python3' в свой ~/.profile, а затем источник ~/.profileв вашем ~/.bash_profileи / или вашем ~/.zsh_profileс помощью строки вроде:

[ -e ~/.profile ] && . ~/.profile

Таким образом, ваш псевдоним будет работать через оболочки.

С этим pythonкоманда теперь вызывает python3. Если вы хотите иногда вызывать «оригинальный» python (который относится к python2 ), вы можете использовать его command python, который не затрагивает псевдоним и работает во всех оболочках.

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

alias 2='python2'
alias 3='python3'

Совет: для сценариев вместо использования шебанга вроде:

#!/usr/bin/env python

использовать:

#!/usr/bin/env python3

Таким образом, система будет использовать python3 для запуска python исполняемых файлов.

Сантош Кумар
источник
2
Разве это не должно быть помещено в ~ / .bash_profile вместо ~ / .bash_aliases?
UnsettlingTrend
4
Установка alias python=python3и запуск pythonв моем терминале на osx el capitan не работает для меня. Попытался сохранить его как ~ / .bash_aliases, так и ~ / .bash_profile.
Haymaker87
43
@ Haymaker87 запустить source ~/.bash_profileпосле редактирования ~/.bash_profileфайла.
Вэй Лу
15
Вы можете сделать то же самое для пипа:alias pip='pip3.6'
стивен
@ Surfer190, который вызывает проблемы при работе с sudo, не так ли?
Сантош Кумар
142

Вы можете решить это по символической ссылке.

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python
Шин Ким
источник
25
Это правильный ответ (псевдонимы хороши, но доступны только через bash, что ограничивает область, откуда вы можете звонить). Однако я бы использовал unlinkвместо rmудаления символические ссылки (если вы случайно добавите косую черту, у rmвас могут быть плохие результаты). В качестве альтернативы, вы можете сделать то, ln -s -f ...что должно перезаписать текущую символическую ссылку.
Чад Бефус
2
@ChadBefus Спасибо за ваш ответ. Я согласен с вашим мнением. unlink безопаснее, чем rm.
Шин Ким
3
Есть ли у него какие - либо последствия для сценариев , которые ожидают pythonбыть python2.7?
Антон Тарасенко
19
macOS:unlink: /usr/bin/python: Operation not permitted
MarksCode
4
@MarksCode попробуйте просто запустить вторую исходную строку (т.е. ln -s... с помощью /local/ ).
EliadL
42

Откройте файл ~ / .bash_profile .

vi ~/.bash_profile

Затем поместите псевдоним следующим образом:

alias python='python3'

Теперь сохраните файл и запустите файл ~ / .bash_profile .

source ~/.bash_profile

Поздравление !!! Теперь вы можете использовать python3, набрав python .

python --version

Python 3.7.3

Ананта Чандра Дас
источник
Если вы обнаружили, что, как и я, то же самое относится и к pip (т. Е. Pip -version по-прежнему 2.7.x), тогда вам нужно будет выполнить те же шаги для pip3. vi ~ / .bash_profile, псевдоним pip = 'pip3', источник ~ / .bash_profile, pip --version
SnellyBigoda
Мне действительно нужно source ~/.bash_profileкаждый раз, когда я заново открываю свой терминал? Когда я закрываю и снова открываю терминал, он возвращается к python2.
Рики Агилар
21

Перейти к типу терминала:

alias python=python3.x

Это установит Python по умолчанию как python3.x

Адитья
источник
1
Это сработало для меня, но с использованием "псевдонима python = python3"
Discant
Это временно установит версию Python для этого терминала.
Эшвин Р
12

Следующее сработало для меня

cd /usr/local/bin
mv python python.old
ln -s python3 python
Mayank Jain
источник
10

Я немного опоздал с игрой, но подумал, что должен опубликовать обновленный ответ, так как я только что столкнулся с этой проблемой для себя. Обратите внимание, что это будет применяться только к настройке на базе Mac (я не пробовал это с Windows или любой разновидностью Linux).

Самый простой способ добиться этого - установить Python через Brew . Если у вас не установлен brew, вам нужно будет сделать это в первую очередь. После установки выполните следующие действия в терминале:

brew install python

Это установит Python 3. После установки запустите:

ls -l /usr/local/bin/python*

Вы увидите все ссылки, созданные brew на установку Python. Это будет выглядеть примерно так:

lrwxr-xr-x  1 username  admin  36 Oct  1 13:35 /usr/local/bin/python3@ -> ../Cellar/python/3.7.4_1/bin/python3
lrwxr-xr-x  1 username  admin  43 Oct  1 13:35 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.4_1/bin/python3-config
lrwxr-xr-x  1 username  admin  38 Oct  1 13:35 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.4_1/bin/python3.7
lrwxr-xr-x  1 username  admin  45 Oct  1 13:35 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7-config
lrwxr-xr-x  1 username  admin  39 Oct  1 13:35 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.4_1/bin/python3.7m
lrwxr-xr-x  1 username  admin  46 Oct  1 13:35 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7m-config

Первая строка в этом примере показывает python3символическую ссылку. Чтобы установить его как pythonсимволическую ссылку по умолчанию, выполните следующее:

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

После установки вы можете сделать:

which python

и это должно показать:

/usr/local/bin/python

Вам придется перезагрузить текущую терминальную оболочку, чтобы она использовала новую символическую ссылку в этой оболочке, однако все вновь открытые сеансы оболочки будут (должны) автоматически ее использовать. Чтобы проверить это, откройте новую оболочку терминала и выполните следующее:

python --version
sknight
источник
Прекрасно работает ( Справка )
Непо Знат
9

Перейдите в «Приложения», войдите в папку «Python», там должен быть скрипт bash с именем «Update Shell Profile.command» или аналогичный. Запустите этот скрипт, и он должен это сделать.

Обновление: похоже, вы не должны обновлять его: как изменить версию Python по умолчанию?

CT Zhu
источник
8

Это сработало для меня. Я добавил псевдоним и перезапустил свой терминал :

alias python=/usr/local/bin/python3
toadead
источник
6

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

Вы должны добавить / изменить ваши команды ~/.zshrcвместо.

Мистер кроули
источник
3

Я не уверен, что это доступно в OS X, но в Linux я бы использовал moduleкоманду. Смотрите здесь .

Настройте файл модуля правильно, затем добавьте что-то вроде этого в ваш rc-файл (например, ~ / .bashrc):

module load python3.3

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

завихренность
источник
3

Я думаю, что когда вы устанавливаете python, он помещает операторы пути экспорта в ваш файл ~ / .bash_profile. Поэтому, если вы больше не собираетесь использовать Python 2, вы можете просто удалить это утверждение. Псевдоним, как указано выше, также является отличным способом сделать это.

Вот как удалить ссылку из ~ / .bash_profile - vim ./.bash_profile - удалить ссылку (AKA что-то вроде: export PATH = "/ Users / bla / anaconda: $ PATH") - сохранить и выйти - источник ./ .bash_profile для сохранения изменений

doubleOK
источник
Так не бывает
co2f2e
3
$ sudo ln -s -f $(which python3) $(which python)

сделано.

ööri
источник
2

ПРАВИЛЬНЫЙ и НЕПРАВИЛЬНЫЙ способ установить Python 3 по умолчанию на Mac

В этой статье автор обсуждает три способа установки Python по умолчанию:

  1. Что не делать.
  2. Что мы МОЖЕМ сделать (но не должны).
  3. Что мы должны делать!

Все эти способы работают. Вы решаете, что лучше.

Давид Габричидзе
источник
1

Если вы используете virtualenvwrapper, вы можете просто найти его с помощью which virtualenvwrapper.sh, затем открыть его с помощью vimили любого другого редактора, а затем изменить следующее

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

Измените строку VIRTUALENVWRAPPER_PYTHON="$(command \which python)"на VIRTUALENVWRAPPER_PYTHON="$(command \which python3)".

Эсир Кингс
источник
1

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

установите PyCharm и перейдите в файл ==> настройки для нового проекта, затем выберите интерпретатор, который вы хотите для своих проектов, в данном случае Python 3.3

Chama
источник
1

Если вы используете macports, вам не нужно играть с псевдонимами или переменными среды, просто используйте метод, который macports уже предлагает, объясненный в следующих вопросах и ответах:

Как: Macports выбрать Python

TL; DR:

sudo port select --set python python27
alanwaring
источник
1

Если вы используете macports, это проще сделать:

бегать:

port install python37

после установки установите значение по умолчанию:

sudo port select --set python python37

sudo port select --set python3 python37

перезагрузите окно cmd, готово.

Кларк Со
источник
1

Ну ... Это немного старое. Но все же заслуживает хорошего ответа.

И хороший вы не хотите трогать стандартный Python на Mac.

Установите любую нужную версию Python через Homebrew или любую другую и используйте ее в virtualenv. Virtualenv часто считают чем-то вроде дерьма, но это все же намного лучше, чем менять версию Python для всей системы (macOS, вероятно, защитит себя от таких действий) или для всего пользователя, для всего bash ... что угодно. Просто забудьте о стандартном Python. Использование игровых площадок, таких как venv, - это то, за что ваша ОС будет очень, очень благодарна.

Например, многие современные дистрибутивы Linux избавляются от Python2, установленного «из коробки», оставляя в системе только Python3. Но каждый раз, когда вы пытаетесь установить что-то старое с python2 в качестве зависимости ... надеюсь, вы понимаете, что я имею в виду. Хорошему разработчику все равно. Хорошие разработчики создают чистые игровые площадки с желаемой версией Python.

Tor_Gash
источник
0

Пользователям Mac просто нужно запустить следующий код на терминале

brew switch python 3.x.x

3.xx должна быть новой версией Python.

Это обновит все системные ссылки.

Dilshan
источник
0

Предложения для псевдонима python для python3 вызовут проблемы с виртуальными средами, которые устанавливают версию python (например, pyenv). С помощью pyenv вы можете установить глобальную версию следующим образом:

pyenv global 3.8.2

и затем в любом конкретном проекте вы можете создать файл .python-version, в котором есть версия python:

pyenv local 2.7.1

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

Джекоб
источник