как изменить версию Python по умолчанию?

107

Я установил на свой Mac Python 3.2. После запуска / Applications / Python 3.2 / Update Shell Profile.command меня сбивает с толку то, что когда я набираю python -V в терминале, он говорит, что Python 2.6.1 , как я могу изменить версию python по умолчанию?

Чжу Шэнци
источник
Связанный: stackoverflow.com/a/18425592/939986
Сантош Кумар
См. Opensource.com/article/19/5/python-3-default-mac для хорошего решения с использованием pyenv.
Thomas Ahle

Ответы:

115

Вероятно, это желательно для обратной совместимости.

Python3 нарушает обратную совместимость, и программы, вызывающие python, вероятно, ожидают python2. Вероятно, у вас есть много программ и скриптов, которые вы даже не знаете, которые ожидают python = python2, и изменение этого параметра приведет к поломке этих программ и скриптов.

Ответ, который вы, вероятно, ищете: вам не следует это менять .

Однако вы можете создать собственный псевдоним в своей оболочке. То, как вы это сделаете, зависит от оболочки, но, возможно, вы могли бы сделатьalias py=python3

Если вы не знаете, как запустить последнюю версию python, по крайней мере, в случае Linux python3ваша python2установка остается нетронутой (из-за вышеуказанных причин совместимости) ; таким образом, вы можете запустить python3 с помощью python3команды.

ниндзягеко
источник
36
Это полезная информация, но вопрос был в том, «как я могу изменить версию Python по умолчанию». Можем ли мы добавить что-нибудь, чтобы помочь людям, пытающимся это сделать?
dmeyerson 02
На Mac установка Python3 также оставляет без изменений Python2. Но мне кажется, что есть способ изменить значение по умолчанию, которое запускается при вводе просто «python». Один раз наткнулся на вариант. Я решил оставить все как есть, где "python --version" показывает 2.7.12, а "python3 --version" показывает 3.7.0. Я согласен с dmeyerson выше, что вопрос в том, как это изменить. Ваш совет хорош, но есть способ изменить его, если вы должны (или очень, очень хотите).
Рич Садовски
3
> Ответ, который вы, вероятно, ищете: вам не следует это менять. И тут я подумал «как мне это изменить»!
duane
2
Это правильный ответ. Не меняйте то, что pythonуказывает на системном уровне, так как в этом случае вы можете сломать важные компоненты вашей ОС . Вместо этого используйте отдельную установку Python 3 и virtualen, чтобы получить «локальный» Python по умолчанию.
Мартейн Питерс
52

Проверьте расположение python 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 затем получит python 3 из-за псевдонима, что может иметь непредвиденные негативные последствия.
Шонина
Намерения Apple не имеют отношения к вопросу.
duane
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, у него будет аналогичный каталог bin фреймворка без перекрывающихся имен файлов (за исключением 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, как это исправить?
Ysh
32

Старый вопрос, но в качестве альтернативы:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
источник
конечно, но если у вас нет исполняемого файла (например, python3.5), это решение не работает.
Афшин Мехрабани
Я думаю, что это касается этого stackoverflow.com/questions/5506110/…
FreshPow
20

Делай правильно, поступай правильно!

---> Zero Откройте свой терминал,

- Во-первых, ввод 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_profileBash или ~/.zshrczsh.

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

ИЛИ

alias python=python3

-Шестой ввод source ~/.bash_profileпод Bash или source ~/.zshrcпод zsh.

- В-седьмых, выйти из терминала.

--- В-восьмых, откройте свой терминал и введите python -Vего. Вероятно, он покажет:

Python 3.7.2

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

Остальные, ~/.bash_profileпод zsh не то ~/.bash_profile.

Переменная среды PATH в zsh вместо ~/.profile(или ~/.bash_file) через ~/.zshrc.

Помогите, ребята!

Макаллистер Боуман
источник
16

Измените Python "по умолчанию", поместив его перед системным Python на своем пути, например:

export PATH=/usr/local/bin:$PATH
Адам Ванденберг
источник
Я предполагаю, что, сделав это, вы можете что-то сломать на Mac. Поскольку существует множество программ и скриптов, использующих псевдоним "python". Если вдруг из-за изменения приоритета в PATH они начнут указывать на Python3, а не на Python2 - это может что-то сломать. Потенциально вся ОС ... это мое предположение, хотя и не проверено.
Aivoric
3
Любое системное программное обеспечение будет использовать полный путь к системе, предоставленной Python.
Адам Ванденберг
2

Согласно быстрому поиску в Google, это обновление применяется только к текущей открытой вами оболочке. Вероятно, это можно исправить, набрав python3, поскольку Mac и Linux достаточно похожи, чтобы такие вещи совпадали. Ссылка на результат поиска Google.

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

Мэтт Хабель
источник
2

Я использую OS X 10.7.5 и Python 3.4.2. Если вы наберете python3и то, что хотите запустить, оно запустится с использованием python 3. Например pyhton3 test001.py. Это запустило созданную мной тестовую программу под названием test001. Надеюсь, это поможет.

ITGM
источник
5
Добро пожаловать в Stack Overflow! Похоже, ваш ответ не является настоящим ответом на заданный вопрос. Если вы хотите исправить это, обратитесь за помощью к stackoverflow.com/help/how-to-answer .
Others
Я потратил ЧАСЫ, пытаясь заставить 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, измените его на путь к желаемой версии.

amalik2205
источник
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
Джавид Шакил
источник
0

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

set path=C:\Users\Shaina\AppData\Local\Programs\Python\Python35-32;%PATH%
python --version

введите описание изображения здесь

Шайна Раза
источник