Что Apple сделала со структурой Python? - PullRequest
10 голосов
/ 27 мая 2011

[ТЛ; др? см. внизу]

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. Это случилось с кем-нибудь еще? Если так, когда это произошло? Почему так случилось? И самое главное, как мне их вернуть?

Ответы [ 3 ]

6 голосов
/ 27 мая 2011

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.

3 голосов
/ 27 мая 2011

На самом деле не похоже, что вы понимаете экосистему 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?

1 голос
/ 27 мая 2011

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

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