Что сделала Apple в рамках Python?

[TL;DR? см. внизу]

Python на OS X всегда был чем-то вроде мерзости в том, что он распался и распространился по всей системе. Некоторые из /usr, некоторые из /Library/Python, некоторые /System/Library/Frameworks/Python.framework.

Теперь, как я понимаю, предполагается, что структура должна содержать дистрибутив Python, т.е. биты и куски, которые не будут меняться. Примером могут быть заголовки, стандартная библиотека, двоичные изображения и т.д.

Так как разработчик сортировки популярного расширения Python C, я считаю себя очень хорошим в экосистеме OS X и как скомпилировать расширения Python на нем. Не прошло и месяца назад, что Apple решила пропустить QA, сломав расширение C расширения по всем направлениям.

Он сломан еще новым способом, поскольку Apple, похоже, решила удалить лучшую часть дистрибутива Python. Посмотрите каталог include/:

$ ls -l /System/Library/Frameworks/Python.framework/Versions/Current/include/python2.6 
total 16
-rw-r--r--  1 root  wheel    30K Jun 25  2010 pyconfig.h

Отсутствует что-то? Возможно, заголовок Python.h? Что еще, у меня были проблемы с zc.buildout, потому что он не мог найти site.py... Посмотрите:

$ python -c 'print __import__("site").__file__'
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc

$ ls -l /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.py*
-rw-r--r--  1 root  wheel    20K May 17 15:40 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc

Отсутствует что-то? Возможно, оригинал site.py?

В целом, похоже, Apple лишила жизненно важных ресурсов для разработчиков. Я подтвердил оба этих вывода на других MacBook с OS X 10.6.7.

tl; dr Apple удалила множество основных заголовков и исходный код из инфраструктуры Python. Это случилось с кем-то еще? Если да, когда это произошло? Почему так случилось? И самое главное, как мне их вернуть?

Ответ 1

Python.h и другие заголовки включены в Xcode. В моей системе он расположен как в /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h, так и /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h. Последний, похоже, установлен установщиком Xcode.

Ответ 2

На самом деле, похоже, что вы вообще не понимаете экосистему OS X. /System/Library - для компонентов Apple, поставляемых в дистрибутив OS X; третьи стороны не должны помещать файлы туда, но вместо этого следует использовать /Library. Вот почему встроенные Pythons (несколько версий) находятся в /System/Library/Frameworks/Python.framework, но поместите каталоги site-packages в /Library/Python, чтобы там могли быть установлены сторонние модули. Что касается /usr/bin, он содержит символические ссылки на исполняемый файл python по версии и программы, которые автоматически анализируют версию на основе некоторых параметров (см. man python). Это на самом деле вполне логично и аккуратно.

Теперь, чтобы ответить на ваши вопросы. Заголовки C и другие ресурсы разработчика не включены в стандартную установку OS X. Это не относится к Python и было сделано для экономии места при установке по умолчанию. Чтобы получить ресурсы разработчика, вам необходимо установить инструменты разработчика. Что вы собираетесь делать с заголовком C без C-компилятора?

Ответ 3

Я сталкивался с аналогичными проблемами в прошлом. Предложение Space_C0wb0y работает для меня, и с помощью python_select я могу переключаться между "по умолчанию" версиями python. Это также отключает меня от XCode. Я установил версии 2.6 и 2.7 с помощью MacPorts, который по умолчанию помещает дистрибутив в такие места, как /opt/local/Library/Frameworks/Python.framework/Versions/2.7. Это единственный способ, которым у меня были последовательные установки, в том числе сторонние модули.