Python-distutils nicht unter Verwendung der korrekten version von gcc
Ich versuche zu kompilieren eines Pakets unter Mac OSX 10.6.5. Das Paket-Installationsskript setzt auf distutils. Das problem ist, dass der computer die Standard-gcc-version 4.2 (hab ich bestimmt nur ausgeführt gcc --version in einem terminal-Fenster), aber wenn ich laufen 'python setup.py bauen", sehe ich aus dem Ausgang, dass die distutils ist die Wahl gcc-4.0 statt 4.2 ist Dies ein großes problem, weil der code, den ich verwende, benötigen gcc >= 4.2. Ich habe keine admin Rechte auf diesem Rechner, so wie ein workaroud, ich habe einige symlinks, die senden gcc-4.0 gcc-4.2. Das Ergebnis ist der code kompiliert, aber die erzeugte .also Dateien die nicht funktionieren (wenn ich versuche, um Sie zu importieren in python, bekomme ich Fehler, Klagen über eine fehlende init-Funktion in der shared object).
Habe ich versucht zu kompilieren diesen code auf einem anderen mac (10.6.6), und es funktioniert wie ein Charme: distutils wählt 4.2, ohne gezwungen zu tun, und ich kann den import der erzeugten shared object ohne ein problem. Also, was ich gerne tun würde, ist, den code zu kompilieren auf meinem computer, ohne dass dazu symlink Tricks...ich will nur distutils zu wählen 4.2 automatisch, wie es sollte. Ich habe versucht, die Einnahme der .also Dateien, die richtig kompilieren und übertragen Sie Sie auf meinem computer, aber nicht, dass für eine Reihe von Gründen (Sie verbunden sind, gegen Bibliotheken, die nicht auf meinem Rechner/eine andere version ist, dass diese installiert ist).
Hat jemand einen Rat hier?
Dank,
Josh
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwingen distutils verwenden einen separaten compiler, können Sie neu definieren einige Variablen, die über die Umwelt. Erstens, herauszufinden, was distutils ist die Verwendung als Standard:
Als Nächstes müssen Sie definieren diese als Ersatz in die gcc-version, die Sie verwenden möchten:
Beachten Sie, dass der sysconfig werden die Standardwerte zog aus der Makefile, das ursprünglich verwendet wurde, zu kompilieren, python, so fudging mit Ihnen können unerwartete Ergebnisse:
Haben Sie versucht, die Einstellung einer benutzerdefinierten CC-Umgebungsvariable?
Ihnen nicht sagen, welche Versionen von Python geben, die Sie verwenden, aber die Chancen sind, dass die Standard-Python auf dem Computer, den Sie verwenden, ist nicht die von Apple mitgelieferten Python 2.6.1, eher eine installiert python.org. Versuchen Sie das build-Skript mit
/usr/bin/python2.6
das sollten die von Apple mitgelieferten Python 2.6; dass nichtgcc-4.2
.Wenn Sie Python Distutils (in der Regel durch ausführen einer
setup.py
Skript oder miteasy_install
), Distutils versucht, sicherzustellen, dass jede C-extension Module in das Paket, das Sie installieren, erstellt werden mit den gleichen compiler-version und kompatibel mit Kompilations-Optionen (CPU-Architekturen, ABI, etc) verwendet wurde, zum bauen von Python selbst. Traditionell haben die meisten python.org Installateure für Mac OS X bieten ein universelles Python, das funktioniert auf mehrere Versionen von OS X und mehrere CPU-Architekturen. Das ist, warum Sie sind, built with gcc-4.0. Wenn Sie mit gcc-4.2 für einige andere Bibliothek", dann ist die sicherste Sache ist die Verwendung eines Python, das war gebaut mit gcc-4.2. Die von Apple mitgelieferten system-Pythons auf OS X 10.6 sind so gebaut. Auch für die aktuellen Versionen von Python (2.7.1 und 3.2), python.org es gibt noch eine zweite OS X-installer-Variante für OS X 10.6 wird auch gebaut mit gcc-4.2. Aber wenn Sie nicht über admin-Zugriff auf Ihre Maschine, ist das keine option sowieso.Sehen Sie, welche python verwendet wird, die standardmäßig von:
Können Sie entweder passen Sie Ihre distutils.cfg (siehe hier) oder übergeben Sie Befehl Linie Argumente wie --compiler=gcc42 (nicht sicher über die Letzte).
--compiler=gcc-4.2