Pip / easy_install ignorieren ARCHFLAGS in der SciPy-Installation?

Ich versuche, SciPy sowohl für 32-Bit- als auch für 64-Bit-Architekturen zu kompilieren, da einige der Anwendungen, die die Bibliothek verwenden, nur ein Bogen oder der andere sind, nach Ratschläge von wenigen SO- Fragen . Dieser Befehl hat für mich in einem ähnlichen Build vor etwa zwei Monaten gearbeitet, aber jetzt scheint es, dass einige der kompilierten geteilten Bibliotheken nur auf x86_64 zielen:

sudo ARCHFLAGS="-arch i386 -arch x86_64" pip install scipy

Ich habe versucht, mehrere Versionen dieses Befehls, einschließlich der Einstellung der Umgebungsvariablen vor sudo , einschließlich -m32 -m64 in FFlags, mit dem OSX Command Line Tools, eine vollständige Xcode-Installation, mit Clang anstelle der LLVM, die mit OSX kommt nach dem Offizielle SciPy Installationsanleitung , easy_install statt Pip und sogar ./configure'ing separat, etc., aber ich kann nicht scheinen, um es zu arbeiten. Seltsamerweise sind einige der .so's mit beiden Architekturen gebaut, aber einige sind nicht:

 dhcp-10-249-71-202:~ kastman$ file /Library/Python/2.7/site-packages/scipy/optimize/*.so /Library/Python/2.7/site-packages/scipy/optimize/_cobyla.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/_lbfgsb.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/_minpack.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/_nnls.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/_slsqp.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/_zeros.so: Mach-O universal binary with 2 architectures /Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture i386): Mach-O bundle i386 /Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/minpack2.so: Mach-O 64-bit bundle x86_64 /Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so: Mach-O universal binary with 2 architectures /Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture i386): Mach-O bundle i386 /Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 

Wenn man sich das Make-Log ansieht, sieht es so aus, als ob die Args erfolgreich für die Bibliotheken, die scheinen zu arbeiten und diejenigen, die nicht:

 # Minpack doesn't build fat binaries /usr/local/bin/gfortran -Wall -Wall -undefined dynamic_lookup -bundle build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/scipy/optimize/minpack2/minpack2module.o build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/fortranobject.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcsrch.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcstep.o -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin11/4.6.2 -Lbuild/temp.macosx-10.7-intel-2.7 -lgfortran -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/minpack2.so building 'scipy.optimize._slsqp' extension compiling C sources C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe #... but moduleTNC does. llvm-gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/moduleTNC.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/tnc.o -Lbuild/temp.macosx-10.7-intel-2.7 -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/moduleTNC.so building 'scipy.optimize._cobyla' extension compiling C sources C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe 

Ist es möglich, dass der Unterschied ist der Gfortran-Compiler, den ich verwende? Ich habe brew install gfortran die nach der SciPy-Dokumentation gut sein soll. Ich würde denken, dass die wichtige Linie der C-Compiler sein würde: clang line, die fast identisch zu sein scheint, einschließlich beide -archs.

Der letzte ausführlichste Build, den ich ausprobiert habe, war:

sudo env ARCHFLAGS="-arch i386 -arch x86_64" ARCH="i386 x86_64" CC="clang" CXX="clang" FFLAGS="-ff2c -m32 -m64" pip install scipy

Hat jemand Vorschläge, wie man das weiter diagnostizieren kann?

(OSX 10.7, neues MacBookPro, Kompilieren mit gcc aus den CLI Tools und von Xcode)

One Solution collect form web for “Pip / easy_install ignorieren ARCHFLAGS in der SciPy-Installation?”

Das Ziehen von Quelle und Gebäude scheint korrekt fette Binärdateien zu erzeugen. Ich bin mir nicht sicher, ob das ein Fehler ist, der bereits behoben ist (ich habe nichts auf der Scipy-Dev-Liste gesehen) oder wenn es mit pip / easy_install zu tun hat, aber hier ist was ich getan habe, um es zu arbeiten:

 git clone https://github.com/scipy/scipy.git; cd scipy export ARCHFLAGS='-arch i386 -arch x86_64' python setup.py config python setup.py build sudo python setup.py install 

Keine besonderen CC-Umgebungsvariablen, Gfortran war von brew install gfortran , und überraschend sieht es aus wie gcc war llvm-gcc.

  • Nächste Nachbar Suche in Python ohne Kd Baum
  • Zusammenführen von indizierten Array in Python
  • Warum Berechnungen von Eigenvektoren einer 2 x 2 Matrix mit numpy stürzt meine Python-Session?
  • Hinzufügen von zwei `csc` spärlichen Matrizen von verschiedenen Formen in Python
  • Matplotlib: Grenzen bei der Verwendung von Plot und Imshow in den gleichen Achsen
  • ValueError bei Verwendung von Befehlen in Funktion
  • Halten Sie unveränderte Daten beim Speichern von Numpy Array auf Bild mit Scipy Imsave
  • Mehrere scipy.integrate.ode-Instanzen
  • Melden Sie eine zweistufige KS-Statistik aus zwei vorberechneten Histogrammen
  • Beste Weg, um die Matrixvariablen im SCIPY linearen Programmierschema zu skalieren
  • Scipy sparse invert oder spsolve führen zu UMFPACK_ERROR_OUT_OF_MEMORY
  • Python ist die beste Programmiersprache der Welt.