Як я можу змінити стандартну версію 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?

Відповіді:


21

Це легко:

defaults write com.apple.versioner.python Version 2.6

Дивіться man pythonповне пояснення від Apple.

Крім того, одна готча: переконайтеся, що ви працюєте з Python, який постачається разом із комп'ютером, а не з іншим, який ви встановили. Зробіть це, ввівши which pythonу своєму командному рядку. На це слід вказувати /usr/bin/python. Я згадую це лише тому, що моє значення за замовчуванням становить 2,6 під Snow Leopard (це було 2,5, коли я використовував Leopard). Тож факт, що ви отримуєте 2,5, може свідчити про те, що на вашому шляху є ще щось.

Оновлення

Щоб звернутися до коментарів нижче:

Це не робить того, що люди просять.

Це для мене, в ОС 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, де Поточна точка до 2.7, яка може спричинити проблеми (адже вона все ще знаходиться в sys.path з 2.6!)

Дійсно, це посилання не виправляє.

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

Однак можливо - не перевірено - що Currentсимвольне посилання використовується будь-яким easy_installабо pip. Це спричинило б проблеми. Звичайно, це здається помилкою, що символьне посилання не оновлюється під час оновлення версії Python.


3
Ви були праві. Я давно встановив MacPython, і це накрутив мою змінну PATH, на яку так pythonвказували /Library/Frameworks/Python.framework/Versions/Current/bin. Природно, що не було оновлено до 2.6. Тому я замінив свою змінну PATH на типову, яку я знайшов у Google, і тепер видаляю MacPython зі своєї системи.
SBSTN

@SBSTN У мене є та ж проблема (шлях пітона вказує на /Library/Frameworks/Python.framework/Versions/Current/bin) Як це змінити?
Зак

Більше не працює з Xcode4, оскільки немає / Бібліотека / Рамки / 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.
Нейт

Це не робить того, що люди просять. Не впевнений, чому це відповідь.
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, і це просто має сенс.
Нахт

0

Не ідеально (IMO), але це зафіксувало всі програми, які шукають pythonу моїх /usr/local/bin/.

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

Звичайно, після встановлення останньої версії Python.


це дійсно погана ідея. За допомогою символьного посилання можна зрозуміти, але копіювання двійкових файлів туди-назад НЕ є доброю ідеєю.
Якаву

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