як змінити версію python за замовчуванням?


106

Я встановив python 3.2 у своєму mac. Після запуску / Програми / Python 3.2 / Оновлення Shell Profile.command стає заплутаним те, що коли я набираю python -V у терміналі, він каже, що Python 2.6.1 , як я можу змінити версію python за замовчуванням?



Дивіться opensource.com/article/19/5/python-3-default-mac для приємного рішення з використанням pyenv.
Томас Ейл

Відповіді:


115

Це, мабуть, бажано для зворотної сумісності.

Python3 порушує сумісність назад, і програми, що викликають "python", ймовірно, очікують, що python2. У вас, ймовірно, є багато програм і сценаріїв, про які ви навіть не знаєте, які очікують python = python2, і змінивши це, вони можуть порушити ці програми та сценарії.

Відповідь, яку ви, напевно, шукаєте, - Ви не повинні цього змінювати .

Однак ви можете зробити власний псевдонім у своїй оболонці. Те, як ви це зробите, залежить від оболонки, але, можливо, ви могли б це зробитиalias py=python3

Якщо вас бентежить питання про те, як запустити останню версію python, це, принаймні, в Linux python3залишає вашу python2установку недоторканою (через вищезазначені причини сумісності) ; таким чином ви можете запустити python3 за допомогою python3команди.


36
Це корисна інформація, але питання було "як я можу змінити версію пітона за замовчуванням". Чи можемо ми додати щось, щоб допомогти людям, які намагаються це зробити?
dmeyerson

На Mac, що встановлює Python3, також залишається Python2 неушкодженим. Але мені здається, є спосіб змінити типовий параметр, який виконується, коли просто набирається "python". Я натрапив на варіант один раз. Я вирішив залишити його таким, де показано "python --version" 2.7.12, а "python3 --version" - 3.7.0. Я згоден з dmeyerson вище, що питання полягає в тому, як це змінити. Ваша порада хороша, але є спосіб змінити її, якщо потрібно (або дуже, дуже хочеться).
Багатий Садовський

3
> Відповідь, яку ви, мабуть, шукаєте, - Ви не повинні змінювати це. І тут я подумав, що це "як я це міняю"!
дуейн

2
Ця відповідь правильна. Не змінюйте, що pythonвказує на системному рівні, оскільки ви можете зламати важливі компоненти вашої ОС, якщо це зробити . Замість цього використовуйте окрему установку Python 3 та virtualen, щоб дати собі "локальний" Python за замовчуванням.
Martijn Pieters

50

Перевірте розташування пітона 3

$ which python3
/usr/local/bin/python3

Запишіть псевдонім у bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Перезавантажте bash_profile

source ~/.bash_profile

Підтвердити команду python

$ python --version
Python 3.6.5

2
це погане рішення. Як згадується у прийнятій відповіді, $ pythonвона зарезервована для python 2. Будь-яка програма, яку ви запускаєте на своєму комп’ютері, яка очікує, що python 2 отримає пітон 3 через псевдонім, який може мати непередбачені негативні наслідки.
Шонін

Намір Apple не має відношення до питання.
Дуейн

45

У Mac OS X, використовуючи інсталятор python.org, як ви, мабуть, вам потрібно запустити Python 3 python3, а не python. Наразі це зарезервовано для версій Python 2. Ви також python3.2можете спеціально викликати цю версію.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Якщо ви також встановили Python 2 з python.org, він мав би аналогічний базовий каталог бін без імен файлів, що перекриваються (крім 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*

Що стосується "наразі зарезервованого для версій Python 2", чи є у вас посилання на це?
Wildcard

Якщо у мене є python 3.4 та python 3.7, коли я набираю python3 з терміналу, він виконує python 3.4, а не 3.7, як це виправити?
Іш


19

Роби правильно, роби все правильно!

---> Нуль Відкрийте свій термінал,

--По-перше python -V, це, ймовірно, показує:

Python 2.7.10

-Повторне введення python3 -V, це, ймовірно, показує:

Python 3.7.2

- Третє введення where pythonабо which python, Це, ймовірно, показує:

/usr/bin/python

--- По-четверте, вхід where python3або which python3, Це, ймовірно, показує:

/usr/local/bin/python3

--По-п'яте, додайте наступний рядок у нижній частині файлу змінної середовища PATH ~/.profile file or ~/.bash_profileпід Bash або ~/.zshrcпід zsh.

alias python='/usr/local/bin/python3'

АБО

alias python=python3

-Шосте введення source ~/.bash_profileпід Bash або source ~/.zshrcпід zsh.

- Щодня Вихід з терміналу.

--- по-восьмеро Відкрийте свій термінал, і вхід python -V, це, ймовірно, показує:

Python 3.7.2

Я успішно спробував це.

Інші, ~/.bash_profileunder zsh - це не те ~/.bash_profile.

Змінна середовища PATH під zsh замість ~/.profile(або ~/.bash_file) через ~/.zshrc.

Допоможіть, хлопці!


16

Змініть Python "за замовчуванням", поставивши його перед системою Python на своєму шляху, наприклад:

export PATH=/usr/local/bin:$PATH

Моє припущення, що, зробивши це, ви могли щось зламати на Mac. Оскільки існує багато програм і скриптів, які використовують псевдонім "python". Якщо раптом через зміну пріоритету в PATH вони почнуть вказувати на Python3, а не на Python2 - це може щось зламати. Потенційно вся ОС ... це моє припущення, але не перевірено.
Айворич

3
Будь-яке системне програмне забезпечення використовує повний шлях до системи, що надається Python.
Адам Ванденберг

2

Згідно швидкого пошуку в Google, це оновлення стосується лише поточної відкритої оболонки. Можливо, це можна виправити, ввівши python3, оскільки mac та linux досить схожі, щоб подібні речі збігалися. Посилання на результат пошуку Google.

Крім того, як зазначив ninjagecko, більшість програм ще не оновлено до 3.x, тому наявність пітона за замовчуванням як 3.x зламає багато сценаріїв python, які використовуються в додатках.


2

Я використовую OS X 10.7.5 та Python 3.4.2. Якщо ви введете python3і що ви хочете запустити, запустіть його за допомогою python 3. Наприклад pyhton3 test001.py. Це запустило тестову програму, яку я зробив під назвою test001. Я сподіваюся, що це допомагає.


5
Ласкаво просимо до переповнення стека! Схоже, ваша відповідь не є реальною відповіддю на поставлене запитання. Будь ласка , зверніться до stackoverflow.com/help/how-to-answer за допомогою , якщо ви хочете , щоб виправити це.
Інші

Я провів HOURS, намагаючись змусити python3 працювати над моїм Mac - виявилось, що введення python3 замість старого python зробило трюк.
YCode

1

Перейдіть до:

Мій комп'ютер -> Властивості -> Додатково -> Змінні середовища -> Змінні системи

Припустимо, у вас вже був доданий python 2.7 у змінну шляху, і ви хочете змінити шлях за замовчуванням на python 3.x

потім додайте шлях до папки python3.5.x до шляху python2.7.

відкрити cmd: введіть "python --version"

версія python буде змінена на python 3.5.x


3
Це Windows.
charles ross

Деякі IDE включають термінали / cmds / консолі, поширюють змінні середовища. Перезапустіть IDE, щоб отримати зміни всередині вбудованого терміналу.
UselesssCat

0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Це зламає сценарії, але це саме спосіб змінити python. Ви також повинні переписати сценарії, щоб не вважати, що pythonце 2.x. Це буде працювати незалежно від того місця , де ви телефонуєте systemабо exec.


0

Якщо коротко: змінити шлях у змінних середовища!

Для Windows:

  • Розширений System Settings > Advance (tab). На дні ви знайдете'Environment Variables'

  • Двічі клацніть на Path. Ви побачите шлях до однієї з установок python, змініть його на шлях потрібної версії.


0

Перевірте шлях виконання python3 там, де він має бібліотеки

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

відкрийте файл bash_profile та додайте псевдонім

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Перезавантажте bash_profile, щоб набути чинності змін

source ~/.bash_profile

Запустіть команду python і перевірте, чи завантажується вона з python3

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