2011-10-04 2 views
3

Je tente de construire une application python avec des modules binaires sous OS X. Je veux créer des versions pour Snow Leopard et Leopard de Lion. J'ai XCode 4 installé avec les sdks 10.5 et 10.6 et j'ai essayé de construire en utilisant l'indicateur MACOSX_DEPLOYMENT_TARGET défini à 10.6. Je reçois une erreur de distutils se plaignant que python a été construit avec une cible de déploiement différente.Construction de distributions python binaires pour plusieurs versions d'OS X

J'ai essayé de construire un binaire python séparé avec la cible de déploiement définie à 10.6, puis utilisé virtualenv pour essayer de construire à partir de cela, mais virtualenv attendait un répertoire lib sous le répertoire env de base qui n'était pas là.

Je suis un néophyte en développement sur Mac et je ne sais même pas si ce que je veux faire est possible. Est-ce que je vais devoir faire une chute et que quelqu'un qui court toujours Snow Leopard construise mes distributions?

J'apprécie vraiment toute aide.

+1

Qu'est-ce que vous utilisez pour construire vos paquets binaires? Ma conjecture est que tant que votre python interp est construit avec i386 et x86_64, et vous définissez peut-être MACOSX_DEPLOYMENT_TARGET = 10.5, les binaires devraient encore fonctionner à travers eux tous? – jdi

+1

Merci de répondre. Si j'entre "MACOSX_DEPLOYMENT_TARGET = 10.6 python setup.py build" j'obtiens l'erreur distutils.errors.DistutilsPlatformError: $ MACOSX_DEPLOYMENT_TARGET mismatch: maintenant "10.6" mais "10.7" pendant la configuration. –

+1

Je suppose que lors de configure se réfère à la configuration d'origine de l'installation de Python. –

Répondre

1

Les Pythons système fournis par Apple dans OS X 10.7 sont conçus pour 10.7 uniquement. La solution la plus simple est de télécharger le plus récent Python 2.7 or 3.2 64-bit/32-bit installer from python.org et de l'utiliser puisque c'est un binaire universel qui fonctionnera sur 10.6 ou 10.7. Si vous créez un ensemble d'applications, vous devez installer une copie de py2app et d'autres packages tiers tels que Distribute (ou pip).

2

J'ai trouvé la solution, allez dans votre /System/Library/Frameworks/Python.framework/Versions/2.7/lib/distutils/sysconfig.py

ligne Aller 408 qui dit: « augmenter DistutilsPlatformError » et ajouter un '#' pour commenter cette ligne de code ... Cela va "libérer le python"

Vous dites essentiellement à Python "ne vous inquiétez pas, ce n'est pas 10.7, je sais" il pourrait y avoir des plantages en conséquence, mais Je pense autrement. Mon application python très complexe se compile maintenant sur MacOSX 10.8 sans problèmes et il semble faire le travail, QA doit quand même le tester.

+0

Hacking sources Python système n'est vraiment pas quelque chose à recommander. – Petri

+0

Vous avez raison, s'il y avait une autre solution, j'irais d'abord en premier – Orbitus007

Questions connexes