Почему я не могу изменить системный Python по умолчанию так, как Apple говорит, что я могу? - PullRequest
8 голосов
/ 03 сентября 2010

На этой странице справки

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/python.1.html

Apple говорит:

ИЗМЕНЕНИЕ ПИФОНА ПО УМОЛЧАНИЮ

Использование

       % defaults write com.apple.versioner.python Version 2.5

сделает версию 2.5 пользовательской по умолчанию при запуске обоих команды python и pythonw (версионер является внутренним именем используемого программного обеспечения для выбора версии).

Это просто не работает!

tppllc-Mac-Pro:~ swirsky$ python --version
Python 2.7
tppllc-Mac-Pro:~ swirsky$ defaults write com.apple.versioner.python Version 2.5
tppllc-Mac-Pro:~ swirsky$ python --version
Python 2.7

и не делает переключение на 32-битный питон по умолчанию

64-битная поддержка

Версия 2.6 поддерживает 64-битное выполнение (по умолчанию включено). Версия 2.5 поддерживает только 32-битное исполнение.

Как и версия Python, команда python может выбирать между 32 и 64-битное исполнение (когда оба доступны). Использование:

       % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

для выполнения 32-битного исполнения по умолчанию (используя /Library/Preferences/com.apple.versioner.python установит общесистемное значение по умолчанию). Переменная среды VERSIONER_PYTHON_PREFER_32_BIT банка также использоваться (имеет приоритет над файлом настроек):

       % export VERSIONER_PYTHON_PREFER_32_BIT=yes #

Борноподобные раковины или

       % setenv VERSIONER_PYTHON_PREFER_32_BIT yes #

C-подобные оболочки

Я здесь не в себе. Я пытаюсь запустить wxpython. Но он не будет работать на Apple Python 2.7, потому что нет поддержки 64-битного углерода, а поддержка какао в wx еще не закончена.

=== ОБНОВЛЕНИЕ ===

Спасибо за вашу помощь! Тайна раскрыта Меня смутило то, что у меня не было проблем с запуском (32-битного) wxpython на моем ноутбуке (недавний i5 macbook pro), но он не запускался на моем рабочем столе (недавний i7 mac pro).

У них обоих был Python 2.7, и я предположил, что это было то же самое. Но это не так!

Mac Pro имел сборку x86_64

tppllc-Mac-Pro:~ swirsky$ file `which python`
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 3 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386):   Mach-O executable i386
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc7400):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64

а ноутбук не:

thrilllap-2:thrillscience swirsky$ file `which python`
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386):   Mach-O executable i386

Я переустановлю тот без версии x86_64 на моем настольном компьютере, так как мне пока не нужна 64-битная поддержка.

Ответы [ 2 ]

12 голосов
/ 03 сентября 2010

defaults write com.apple.versioner.python и VERSIONER_PYTHON_PREFER_32_BIT являются разработанными Apple изменениями и применяются только к поставляемому Apple /usr/bin/python в OS X 10.6 (Python 2.6.1).(ОБНОВЛЕНИЕ: Это также относится к OS X 10.7 Lion.) Скорее всего, вы установили Python 2.7 с помощью одного из установщиков python.org.В настоящее время на python.org доступно два 2.7 установщика, один (для 10.5 и выше) включает как 32-битную, так и 64-битную поддержку.Второй (для 10.3 и выше, включая 10.6) - только 32-битный.Предположительно, вы установили первый.Чтобы запустить его в 32-битном режиме, вы можете вызвать его с помощью команды arch:

$ arch -i386 python2.7

Или, если вы всегда хотите использовать 32-битную версию, вы можете переустановить 2.7 с помощьюдругой установщик.Обратите внимание, что 64-битный установщик из python.org является новым в 2.7.И, к сожалению, есть несколько проблем с ним, а именно Tkinter и программы, которые его используют (включая IDLE), терпят неудачу на OS X 10.6.Это будет исправлено в обновлении обслуживания.Если они вам нужны на 10.6, пока что используйте 32-битный установщик.

Скорее всего, команда python теперь вызывает 2.7 в том, что установщик python.org обновляет ваши профили входа, например.bash_profile поставить каталог bin в своей структуре первым при поиске оболочки PATH.

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin: # ...
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ /usr/bin/python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
$ python
Python 2.7 (r27:82508, Jul  3 2010, 21:12:11) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
$ python -c 'import sys;print("%x"%sys.maxint)'
7fffffffffffffff
$ arch -x86_64 python -c 'import sys;print("%x"%sys.maxint)'
7fffffffffffffff
$ arch -i386 python -c 'import sys;print("%x"%sys.maxint)'
7fffffff
3 голосов
/ 03 сентября 2010

Я думаю, что версия python, которая поставляется с OS X 10.6, 2.6.Тот факт, что ваша командная строка говорит, что это 2.7, означает, что, если я правильно понимаю, вы установили 2.7 другими способами.(Может быть, macports, fink или скомпилированы напрямую.) Эти Python, не предоставленные Apple, обычно не поддерживают систему контроля версий Apple.Не могли бы вы запустить следующее?

$ which python

Это говорит /usr/bin/python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...