Як встановити версію 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 за допомогою pyenv.
Шин Кім

Відповіді:


579

Змінення стандартної версії виконуваного файлу 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
Можна зробити те ж саме для pip:alias pip='pip3.6'
Stephen

@ surfer190 це спричинить проблеми під час роботи з судо, чи не так?
Сантош Кумар

141

Вирішити це можна за символічним посиланням.

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python

24
Це правильна відповідь (псевдоніми приємні, але доступні лише через 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

Пітон 3.7.3


Якщо ви виявили, що я зробив те, що ця ж проблема стосується і pip (тобто, pip - версія залишається 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 для цього термінального примірника.
Ешвін R

12

Наступне працювало для мене

cd /usr/local/bin
mv python python.old
ln -s python3 python

10

Я трохи запізнююсь на грі на цьому, але я подумав, що слід опублікувати оновлену відповідь, оскільки я щойно зіткнувся з цим питанням. Зауважте, що це стосується лише налаштування на основі Mac (я не пробував цього з Windows або будь-яким ароматом Linux).

Найпростіший спосіб налагодити цю роботу - встановити Python через 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

Чудово працює ( Довідково )
Nepo Znat


8

Це працювало для мене. Я додав псевдонім і перезапустив свій термінал :

alias python=/usr/local/bin/python3

6

Я вважаю, що більшість людей, які приїхали сюди, використовують ZSH thorugh iterm чи будь-що інше, і це приводить вас до цієї відповіді .

Ви повинні ~/.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") - збереження та вихід - source ./ .bash_profile для збереження змін


Не буває
co2f2e


2

ПРАВИЛЬНИЙ та НЕПРАВНИЙ спосіб встановити Python 3 за замовчуванням на Mac

У цій статті автор обговорює три способи встановлення пітона за замовчуванням:

  1. Чого НЕ робити.
  2. Те, що ми можемо робити (але також не повинно).
  3. Що ми маємо робити!

Всі ці способи працюють. Ви вирішуєте, що краще.


1

Якщо ви використовуєте a 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


1

Якщо ви використовуєте макпорти, вам не потрібно грати з псевдонімами або змінними середовища, просто використовуйте метод, який макпорти вже пропонують, пояснений цим запитанням:

Як: Macports виберіть python

TL; DR:

sudo port select --set python python27

1

Якщо ви використовуєте макпорти, це є більш простим способом:

запустити:

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, швидше за все, захистить себе від таких дій) або користувачеві, загалом ... як завгодно. Просто забудьте про Python за замовчуванням. Використання ігрових майданчиків типу venv - це те, що ваша ОС буде найбільшою, дуже вдячною.

Так, наприклад, багато сучасних дистрибутивів Linux позбулися встановленого Python2 нестандартно, залишаючи в системі лише Python3. Але кожен раз, коли ви намагаєтесь встановити щось старе з python2 як залежність ... сподіваюся, ви зрозуміли, що я маю на увазі. Хороший розробник не хвилює. Хороші розробники створюють чисті ігрові майданчики з бажаною версією python.


0

Користувачам Mac просто потрібно запустити наступний код на терміналі

brew switch python 3.x.x

3.xx має бути новою версією python.

Це оновить усі посилання на систему.


0

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

pyenv global 3.8.2

а потім у будь-якому конкретному проекті ви можете створити файл .python-версії, який має в ньому версію python:

pyenv local 2.7.1

Це найкращий спосіб управління кількома версіями python в системі, на мою думку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.