Как правильно обновить Python в Mac OS X

21579
Philippe Mongeau

Если я загружаю python с веб-сайта Python и пытаюсь установить его с помощью установщика, он устанавливается, но мне нужно указать, что мне нужна новая версия Python при запуске моих программ из терминала. Если я просто наберу:

python app.py 

Работает со старой версией.

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

6

3 ответа на вопрос

7
Philippe Mongeau

Я наконец нашел, как это сделать. Установщик создал папку python 2.6 в / Application. В этой папке находится скрипт Update Shell Profile.com, и мне просто нужно было его запустить, и теперь он работает.

Ага. Python 2.6 теперь включает в себя сценарий, чтобы сделать его по умолчанию в командной строке. jweede 15 лет назад 0
5
Telemachus

Два вопроса:

  1. Где новый Python был установлен?
  2. Как выглядит ваш $ PATH?

Настройка по умолчанию в Unix-подобных системах заключается в том, что установленное пользователем программное обеспечение устанавливается в / usr / local / bin, и большинство * nix-дистрибутивов помещают этот каталог перед общесистемными каталогами в переменной $ PATH по умолчанию (именно так оболочка знает где искать программы). Таким образом, если вы установите что-то новое, новый элемент будет найден первым.

Тем не менее, по умолчанию OS X $ PATH выглядит так:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

Проблема в том, что если вы опоздаете / usr / local / bin так поздно, то общесистемный Python (который находится в / usr / bin и т. Д. В вашем $ PATH) продолжает получать удар.

Мой ответ - сделать так, чтобы мой $ PATH выглядел так на Mac:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin 

Для этого создайте файл .profile в вашем домашнем каталоге и добавьте что-то вроде этого:

#### Let's take care of our $PATH # A backup of the original $PATH # /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  # My preferred order - /usr/local goes first, damn it! PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin 

Изменить : я следую здесь, а не в комментариях, потому что это слишком долго для комментария. Строка в вашем .profile с /sw/bin/init.shидет от менеджера пакетов Fink, который, как я предполагаю, вы используете (или использовал в какой-то момент). Другая строка, кажется, предполагает, что в какой-то момент вы установили MacPython, и он переписал ваш $PATHдля вас. Я не знаю MacPython, но если это этот сайт, то он не обновлялся с 2004 года. Он также не говорит ни о какой версии OS X, кроме 10.3, которая не очень актуальна.

Так что теперь я в замешательстве: когда вы обновили Python? Как вы его обновили? Какую версию OS X вы используете?

est -r /sw/bin/init.sh &&. /sw/bin/init.sh # Установка PATH для MacPython 2.6 # Оригинальная версия сохраняется в .profile.pysave PATH = "/ Library / Frameworks / Python.framework / Versions / 2.6 / bin: $ " export PATH Вот так выглядит мой .profile, я не уверен, что мне следует делать, поскольку он отличается от вашего. [Есть ли способ отформатировать код в комментариях?] Philippe Mongeau 15 лет назад 0
@Philippe: Вы можете форматировать код с помощью обратных кавычек, как и в сообщениях. Смотрите сам пост для моего ответа на большую проблему. Telemachus 15 лет назад 0
Я наконец нашел, как решить это. Инсталлятор создал папку в моей директории приложения, которая содержит простоя, несколько примеров и * скрипт * для обновления командной строки. А что касается MacPython, я думаю, он был установлен с помощью xcode. Спасибо за попытку помочь мне в любом случае. Philippe Mongeau 15 лет назад 0
@Telemachus Я полагаю, что MacPython ссылается на установщик .dmg с http://python.org/download/ las3rjock 15 лет назад 0
@ Las3rjock: Круто, это намного лучше, чем я думаю! Спасибо за ссылку. Telemachus 15 лет назад 0
-1
Bill Weiss

Узнайте, где живет питон:

$ which python /usr/bin/python 

Посмотрите, если это символическая ссылка:

$ ls -Fal /usr/bin/python lrwxr-xr-x 1 root wheel 72 May 19 12:02 /usr/bin/python@ -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python 

Если это так, свяжите / usr / bin / python с новым python:

$ sudo ln -s (new python, maybe /System/Library/Frameworks/Python.framework/Versions/2.x/bin/python) /usr/bin/python 

Проверьте, работает ли это:

$ python --version Python 2.xxx 
Он должен абсолютно * НЕ * отменить системный Python по умолчанию таким образом. OS X ожидает, что он будет там, где он есть. Это было бы огромной ошибкой. Telemachus 15 лет назад 4
Это законный ответ на вопрос. Я делал это раньше, ничего не взорвавшись. Любой другой метод не приведет к программам с путём взрыва / usr / bin / python, использующим новый правильный. Bill Weiss 15 лет назад 0
@ Билл: я думаю, что это ужасный подход. Вы всегда можете написать скрипт с # #! / Usr / bin / env python`, и вам не следует заменять общесистемный perl или python, если вы можете избежать этого. Telemachus 15 лет назад 3
Я с Телемахом об этом. Пусть стандартные вещи Mac останутся как есть. Пользовательские установки идут в / usr / local или / opt / local и корректируют PATH и другие переменные окружения по мере необходимости. Doug Harris 15 лет назад 4

Похожие вопросы