En utilisant les modèles Python pour Xcode, j'ai un projet simple fonctionnant sur une machine et échouant sur deux autres, pour des raisons différentes. L'échec est que je résolu même si main.m a:Comment Xcode choisit-il Python à exécuter?
Py_SetProgramName("/usr/bin/python");
Le Python en cours d'exécution réelle vu de main.py avec ceci:
import sys
print sys.version
est différent. Et le problème était que cet autre Python n'avait pas installé objc. Donc la question est: à court de nettoyer ma machine, comment puis-je diriger Xcode pour utiliser le système Python?
Edit:
Ceci est un problème qui semble comme il est trivial, mais ce n'est pas. Il semble que parce que quand je spécifie Mac OS X 10.5 comme le SDK de base, Xcode lie à ce Python.framework, comme je peux le voir en double-cliquant sur l'icône dans Linked Frameworks dans le projet Xcode.
Chaque version de Python.framework possède une paire clé/valeur dans son Info.plist: CFBundleExecutableName/Python. Heureusement (pour la médecine légale) ce Python dans la version 2.5 lance 2.6.1! Pourtant, en imprimant sys.version (à partir de main.py) ou en espionnant le chargeur (en exportant DYLD_PRINT_LIBRARIES = 1), je peux voir que l'application PyObjC lance réellement Python 2.5.4.
La ligne ci-dessus avec Py_SetProgramName .. est hors de propos --- elle peut être commentée et tout fonctionne bien. Donc, à quoi ça ressemble, c'est que Python.framework contrôle quel Python est lancé, il ne le fait pas comme je le souhaitais, et il peut être contrôlé par une routine d'initialisation qui est opaque, puisqu'elle est contrôlée par Apple . Il semble que le meilleur moyen de "contrôler" la situation est de changer le SDK de base.