2010-12-14 2 views
0

Использование шаблонов Python для Xcode, у меня есть простой проект, работающий на одной машине, и неудача на двух других, по разным причинам. Провал я решил, что даже если main.m имеет:Как Xcode выбирает, какой Python запускать?

Py_SetProgramName("/usr/bin/python"); 

Действительное работает Python, как видно из main.py с этим:

import sys 
print sys.version 

отличается. И проблема в том, что у этого другого Python не установлен objc. Поэтому возникает вопрос: не очистка моей машины, как я могу направить Xcode для использования системы Python?

Edit:

Это проблема, которая, кажется, что это тривиально, но это не так. Похоже, что, когда я указываю Mac OS X 10.5 как базовый SDK, Xcode ссылается на эту Python.framework, как я вижу, дважды щелкнув значок в Linked Frameworks в проекте Xcode.

Каждая версия в Python.framework имеет пару ключ/значение в своем Info.plist: CFBundleExecutableName/Python. К счастью (для судебной экспертизы) этот Python в версии 2.5 запускает 2.6.1! Однако, печатая sys.version (от main.py) или отслеживая загрузчик (делая экспорт DYLD_PRINT_LIBRARIES = 1), я вижу, что приложение PyObjC фактически запускает Python 2.5.4.

Строка выше с Py_SetProgramName .. не имеет значения --- она ​​может быть прокомментирована, и все работает нормально.

Итак, похоже, что Python.framework управляет запуском Python, он не делает этого так, как я ожидал, и его можно контролировать с помощью процедуры инициализации, которая непрозрачна, поскольку она контролируется Apple , Кажется, лучший способ «контролировать» ситуацию - изменить базовый SDK.

ответ

0

Извините, что ответили на мой вопрос, но я был просто сбит с толку. Эта часть является ошибкой

Python в рамках версии 2.5 запускает 2.6.1

вызвано тем, что я не понял, что то, что здесь происходит (от версии 2.6/каталог)

> ./Python 
-bash: ./Python: cannot execute binary file 
> Python 
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 

- это то, что мы ищем мой $ PATH и запускаем/opt/local/bin/python. Извинения за путаницу.

Резюмируя, установка SDK должен получить желаемый Python для запуска, как мы можем видеть слежка на погрузчике:

> export DYLD_PRINT_LIBRARIES=1 
> ~/Desktop/X/build/Debug/X.app/Contents/MacOS/X 
dyld: loaded: /Users/telliott_admin/Desktop/X/build/Debug/X.app/Contents/MacOS/X 
dyld: loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 
dyld: loaded: /System/Library/Frameworks/Python.framework/Versions/2.5/Python 
..