It Shouldn't Hurt This Much

  1. One of my students says good things about Spyder, a Python environment with MATLAB-like features. OK, I'd like to give it a try.
  2. On Mac OS X.
  3. Ah—it need PyQT.
  4. And SIP.
  5. And some optional modules, but I'll ignore those for now.
  6. So the first step is to install Qt.
  7. But there aren't binaries—I have to do that from source.
  8. So I have to get XCode onto this machine (fine, that works, it just takes 30 minutes to download).
  9. And hey, Qt builds—I'm on a roll.
  10. So, go into the PyQT directory, do "python" to, um, configure it, then run "make".
  11. Good, good, good, then: kaboom. The error message is:
g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -DSIP_PROTECTED_IS_PUBLIC -Dprotected=public -DQT_NO_DEBUG -DQT_CORE_LIB -I. -I/Users/gregwilson/PyQt-mac-gpl-4.7.6/qpy/QtCore -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I/mkspecs/macx-g++ -I/Library/Frameworks/QtCore.framework/Headers -I/usr/include -F/Users/gregwilson/PyQt-mac-gpl-4.7.6/qpy/QtCore -F/Library/Frameworks -o sipQtCorecmodule.o sipQtCorecmodule.cpp
In file included from /Library/Frameworks/QtCore.framework/Headers/qmetatype.h:45,
from /Library/Frameworks/QtCore.framework/Headers/QMetaType:1,
from sipAPIQtCore.h:40,
from sipQtCorecmodule.cpp:34:
/Library/Frameworks/QtCore.framework/Headers/qglobal.h:288:2: error: #error "You are building a 64-bit application, but using a 32-bit version of Qt. Check your build configuration."
make[1]: *** [sipQtCorecmodule.o] Error 1
make: *** [all] Error 2

Er, what? Why does it think I’m trying to build a 64-bit application? Earlier compile lines say:

g++ -c -pipe -fno-strict-aliasing -O2 -arch i386 -fPIC -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.6/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I../../QtCore -I. -I. -F/Library/Frameworks -o moc_qpycore_pyqtproxy.o moc_qpycore_pyqtproxy.cpp

I’ve highlighted the “-arch i386” line to show that yes, Qt knows I’m on a 32-bit processor—at least, when it’s compiling the files in libqpycore.a. Is it a bug in the SIP build and install? Is it—aw, do I really care? Spyder looks nice, but increasingly, my feeling is that if an application doesn’t “just install”, I’m not interested: I certainly can’t ask students doing Software Carpentry to wrestle with issues like this.


Later: this page helped, but not enough: I’ve got PyQT 4.7.6 installed (at least, “make / make install” in PyQt-mac-gpl-4.7.6 ran to completion), and “python install” in the spyder-1.1.5 directory worked, but when I try to run spyder from the command line (/usr/local/bin/spyder), it tells me that it can’t find PyQT version 4.4. Don’t think I’m going to be introducing my students to it any time soon…