Поставляемые компанией Apple Pythons в OS X 10.6 создаются и устанавливаются с использованием стандартного варианта сборки Python framework с несколькими настройками настройки. Этого нет в документации Apple, потому что конкретный макет не является изобретением Apple; он развивался годами в рамках проекта Python, используя в качестве отправной точки другие макеты платформы OS X. Если вы устанавливаете версию Python на OS X с помощью одного из установщиков python.org, скажем, из здесь , вы увидите тот же шаблон с каркасом с корнем /Library/Frameworks/
, а не /System/Library/Frameworks
. Так что, если вы действительно любопытны, вы можете скачать исходный код и посмотреть на configure
скрипт и Makefile
шаблоны. Это может быть тяжелое чтение, хотя. Apple также делает доступным здесь исходный код, используемый для создания компонентов с открытым исходным кодом, включая Python, в каждом выпуске OS X вместе с патчами для настройки, так что теоретически вы можете точно увидеть, как Apple создала то, что выпустила.
Тем не менее, чтобы ответить на ваши вопросы, в Python 2.6:
$A
- это оболочка pythonw, которая обеспечивает распознавание Python как приложения с графическим интерфейсом в OS X (см. Источник pythonw.c
здесь ). Обратите внимание, что версия Pythonw для Apple была настроена для добавления предпочтительных режимов выполнения (см. Apple man 1 python
). Несколько иной подход к этому представлен в исходном коде новых версий Python (2.7 и 3.2).
$B
- фактический исполняемый файл интерпретатора Python. Это то, что exec
редактируется исполняемым файлом pythonw, $A
. Вы сможете легко проверить это, фактически запустив Python и посмотрев на значение sys.executable
, но есть ошибка с поставляемым Apple Python 2.6 (возможно, из-за добавленной функции, упомянутой выше), которая приводит к неверному значению назначен на это. Python.org Python 2.6.6 показывает правильное значение:
$ cd /Library/Frameworks/Python.framework/Versions/2.6
$ ./bin/python2.6 -c 'import sys;print(sys.executable)'
/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python`
$C
- это разделяемая библиотека, содержащая все загружаемые модули интерпретатора. Это можно увидеть с помощью otool
на $B
:
$ cd /System/Library/Frameworks/Python.framework/Versions/2.6
$ cd Resources/Python.app/Contents/MacOS/
$ otool -L ./Python
Python:
/System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)