Техническое примечание TN2328

Изменения во встраивании Python Используя Xcode 5.0

Этот документ обсуждает некоторые изменения, необходимые для надлежащего встраивания интерпретатора Python с помощью Xcode 5.0.

Введение
Встраивание платформы Python
История версии документа

Введение

Не только может, новые расширения Python, записанные в C/C ++/Objective-C, быть полученными доступ от Python, но интерпретатора Python, могут также быть встроены в C/C ++/Objective-C программа, так, чтобы программа могла выполнить код Python и модули Python доступа, расширения, и т.д.

Встраивание платформы Python

Документация Python объясняет, как получить необходимый компилятор и флаги компоновщика (хотя в большинстве случаев, только -I, -L и -l флаги действительно необходимы). Это работает на большинство подобных Unix операционных систем, включая OS X.

В частности на OS X, Python упаковывается в пакете платформы, так, чтобы все модули Python, расширения и заголовочные файлы были в одном расположении. Многократные версии Python могут также поддерживаться. Это также означает, что компиляция и соединение могут быть упрощены, когда получено доступ через платформу:

Подобная Unix система:

Как платформа:

Поскольку Python является платформой, он также находится в SDK, даже при том, что Python (или любой язык сценариев) испытывает затруднения при нахождении в двух местах. И вследствие долгосрочных и вследствие недавних проблем, было решено удалить Python из SDK. Это не влияет ни на каких обычных пользователей или разработчиков программного обеспечения, не указывающих SDKROOT (или через переменную окружения SDKROOT, -sdk опцию на некоторых инструментах или через -isysroot/-syslibroot опции к компилятору/компоновщику).

Но если Вы будете использовать SDKROOT и/или XCode (который осуществляет SDKROOT), то ярлыки платформы больше не будут работать, таким образом, необходимо будет вернуться к использованию подобных Unix настроек:

1) Замена

#include <Python/Python.h>

с

#include <Python.h>

2) Выполненный (с надлежащим номером версии, не используя 2.7) показанный в Перечислении 1:

Перечисление 1  , Получающее флаги компилятора

% python2.7-config --cflags
-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE

( -I опция дублирована). В XCode вставьте путь (без продвижения -I) в  установку Header Search Paths  раздела Search Paths Настроек Сборки. Не используя XCode, добавьте -I опция с путем к флагам компилятора.

3) Удалите значок Python.framework из боковой панели XCode, или не используя XCode, удалите “- Python платформы” из флагов компоновщика.

4) Выполненный (с надлежащим номером версии, не используя 2.7) показанный в Перечислении 2:

Перечисление 2  , Получающее флаги компоновщика

% python2.7-config --ldflags
-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config -ldl -framework CoreFoundation -lpython2.7

При использовании XCode откройте путь после -L опция в Средстве поиска, и перетаскивает libpython2.7.dylib значок в боковую панель XCode. Подтвердите диалоговое окно, и теперь XCode установлен соединиться против libpython2.7.dylib (при помощи того же -L и -l настройки опции как выше).

Не используя XCode, добавьте -L опция (с путем) и второй -l опция сверху к флагам компоновщика.



История версии документа


ДатаПримечания
30.01.2014

Фиксированный недопустимый '-' символ в Перечислении 1.

30.10.2013

Новый документ, обсуждающий, как встроить язык сценариев Python в Ваше приложение.