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

27

Недавно я обновил установку Mac OS X 10.5 Leopard до 10.6 Snow Leopard, и вместе с этим пришла обновленная версия Python 2.6.1 (вместо 2.5.1). Теперь, когда я печатаю pythonв Терминале, я все еще получаю

Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) 
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Я посмотрел /usr/bin/и обнаружил, что для получения Python 2.6 мне нужно набрать python2.6.

Вопрос в том, как мне сделать pythonотображение команд на Python 2.6?

SBSTN
источник

Ответы:

21

Это просто:

defaults write com.apple.versioner.python Version 2.6

Смотрите man pythonполное объяснение от Apple.

Кроме того, одна проблема: убедитесь, что вы используете Python, который поставляется вместе с вашим компьютером, а не какой-то другой, который вы установили. Сделайте это, набрав which pythonв командной строке. Это должно указывать на /usr/bin/python. Я упоминаю об этом только потому, что в Snow Snow Leopard по умолчанию установлено значение 2,6 (когда я использовал Leopard, он равнялся 2,5). Поэтому тот факт, что вы получаете 2,5, может указывать на то, что на вашем пути есть что-то еще.

Обновить

Чтобы ответить на комментарии ниже:

Это не делает то, что люди просят.

Это для меня, в OS X 10.8.2. После этого defaults write com.apple.versioner.python Version 2.6версия Python по умолчанию действительно 2.6. (И аналогично после перехода на 2.7.)

Это верно независимо от того, запускаю ли я pythonнапрямую или использую исполняемый скрипт, начинающийся с - я #!/usr/bin/env pythonполучаю ожидаемую версию Python.

Это не решает символическую ссылку в /System/Library/Frameworks/Python.framework/Versions, где Current указывает на 2.7, что может вызвать проблемы (потому что оно все еще находится в sys.path с 2.6!)

Действительно, это не исправляет эту символическую ссылку.

Однако, запустить короткий скрипт , который print()вляется sys.pathи (по крайней мере на моей относительно по умолчанию настройки) 2.6 библиотечных каталогов находятся на пути и 2.7 каталогов находятся не на пути. Не является Currentкаталогом с символическими ссылками на пути. Так что это не должно быть проблемой для большинства скриптов.

Тем не менее, возможно - еще не проверялось - что Currentсимволическая ссылка используется easy_installили pip. Это может вызвать проблемы. Это действительно кажется ошибкой, что символическая ссылка не обновляется при обновлении версии Python.

Nate
источник
3
Ты был прав. Я давным-давно установил MacPython, и это испортило мою переменную PATH, на которую я pythonуказывал /Library/Frameworks/Python.framework/Versions/Current/bin. Естественно это не было обновлено до 2.6. Поэтому я заменил переменную PATH на стандартную, найденную в Google, и теперь удаляю MacPython из моей системы.
SBSTN
@SBSTN У меня та же проблема (путь к Python указывает на /Library/Frameworks/Python.framework/Versions/Current/bin) Как мне это изменить?
Зак
Не работает с Xcode4, так как больше нет / Library / Frameworks / Python *, и / usr / bin / python нигде не указывает. Любые идеи? MacPorts был бы решением, но я не хочу его устанавливать.
Алекс
Я установил Xcode 4, и он все еще работает, как описано. /usr/bin/pythonэто исполняемый файл, а не ссылка. /usr/bin/python2.6ссылка , которая указывает на ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Учитывая, что исполняемый файл Python находится в /System/Libraryнем, он должен быть доступен независимо от того, установлена ​​ли какая версия Xcode.
Nate
Это не делает то, что люди просят. Не уверен, почему это ответ.
010110110101
12

Я бы предложил использовать порты Mac ...

Существует пакет с именем python_select, который позволяет использовать питоны параллельно. Поэтому сначала установите порты Mac, если они еще не установлены.

Сначала установите пакет python_select:

sudo port install python_select

Уже сейчас вы можете проверить, какие дистрибутивы Python доступны в вашей системе. Просто введите команду:

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)

В моем случае это напечатано по крайней мере версии питона , который поставляется по умолчанию с Snow Leopard: python26-apple.

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)

показывает текущую выбранную версию, например python26-apple. Итак, вы видите, этот пакет прекрасно работает с Mac. Для большего количества вариантов выпуска

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

Затем вы можете найти доступную версию Python в репозитории портов:

port search python

Это даст длинный список доступных питонов.

Чтобы установить нужные пакеты, например, python 2.4, выполните:

sudo port install python24

Теперь python_select -sбудет показан только что установленный питон. Чтобы переключиться на выпуск Python 2.4:

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)

Эта команда является постоянной между оболочками.

Ованес
источник
5

Предполагая, что вы используете bash, введите:

% type -a python

Это покажет вам все исполняемые файлы "python", псевдонимы, встроенные функции оболочки (вероятно, нет) или функции bash в вашем PATH.

Это должно помочь вам лучше определить, что здесь происходит.

Даг Харрис
источник
3

Вы хотите создать символическую ссылку на нужную версию.

cd /Library/Frameworks/Python.framework/Versions 
sudo rm Current 
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current

Это удаляет текущий указатель на вашу версию Python по умолчанию и устанавливает его на версию 2.6.

любопытный
источник
1
Это похоже на то, что я сделал. Но вместо этого я поместил ссылку в / usr / bin и назвал ее «python» (переопределяя старый исполняемый файл «python», который Apple там поместил). Итак: sudo ln -s /path/to/2.7 /usr/bin/python. Это то, как это делается в Linux, и это имеет смысл.
Nacht
0

Не идеально (IMO), но это исправило все приложения, которые ищут pythonв моем /usr/local/bin/.

sudo cp /usr/local/bin/python3 /usr/local/bin/python

Конечно, после установки последней версии Python.

AGDM
источник
это действительно плохая идея. Использование symlink можно понять, но копирование двоичных файлов туда и обратно НЕ является хорошей идеей.
Jakuje
Понятно, я просто хочу набрать python в терминале и указать на Python3.x ... еще не поздно исправить это должным образом.
AGDM