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.

  • Wie man quadratische subplots in matplotlib mit heatmaps macht
  • Curve Fitting mit bekannten Integralen Python
  • So wenden Sie sich an ndimage.generic_filter ()
  • Anpassung einer geschlossenen Kurve an einen Satz von Punkten
  • Passen zwei Gaußer zu einem Histogramm aus einem Satz von Daten, Python
  • Schnelle Interpolation von regelmäßig abgetasteten 3D-Daten mit unterschiedlichen Intervallen in x, y und z
  • Lösen von zwei ungekoppelten ODEs innerhalb einer Schleife mit Python und scipy.integrate.ode
  • Verwirrung zwischen numpy, scipy, matplotlib und pylab
  • Ist die Build-In Wahrscheinlichkeit Dichte Funktionen von `scipy.stat.distributions` langsamer als ein Benutzer zur Verfügung gestellt?
  • Schnelle Interpolation über 3D-Array
  • Broadcasting einer Python-Funktion auf numpy Arrays
  • Python ist die beste Programmiersprache der Welt.