[PyQt] Unable to configure and run PyQt in OSX 10.6
Hans-Peter Jansen
hpj at urpla.net
Fri Mar 11 00:08:12 GMT 2011
On Friday 11 March 2011, 00:37:54 Flavio wrote:
> Hello -
>
> I am a new PyQT user, experimenting with the toolset. I installed the
> following components in a OSX 10.6 system:
>
> python-2.7.1-macosx10.3 (32-bit)
> qt-mac-opensource-4.7.2
> qt-mac-opensource-4.7.2-debug-libs
> PyQt-mac-gpl-4.8.3
> sip-4.12.1
>
> The SIP installation went through without issues, but I was not able
> to build PyQt. make install would fail here:
>
> g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -DSIP_PROTECTED_IS_PUBLIC
> -Dprotected=public -DQT_NO_DEBUG -DQT_CORE_LIB -I.
> -I/Users/flavio/Downloads/PyQt-mac-gpl-4.8.3/qpy/QtCore
> -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
> -I/mkspecs/macx-g++ -I/Library/Frameworks/QtCore.framework/Headers
> -I/usr/include
> -F/Users/flavio/Downloads/PyQt-mac-gpl-4.8.3/qpy/QtCore
> -F/Library/Frameworks -o sipQtCoreQt.o sipQtCoreQt.cpp g++ -c -pipe
> -fPIC -O2 -Wall -W -DNDEBUG -DSIP_PROTECTED_IS_PUBLIC
> -Dprotected=public -DQT_NO_DEBUG -DQT_CORE_LIB -I.
> -I/Users/flavio/Downloads/PyQt-mac-gpl-4.8.3/qpy/QtCore
> -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
> -I/mkspecs/macx-g++ -I/Library/Frameworks/QtCore.framework/Headers
> -I/usr/include
> -F/Users/flavio/Downloads/PyQt-mac-gpl-4.8.3/qpy/QtCore
> -F/Library/Frameworks -o sipQtCoreQSysInfo.o sipQtCoreQSysInfo.cpp
> g++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o
> QtCore.so
>
> with this error:
>
> ld: library not found for -lqpycore
> collect2: ld returned 1 exit status
> make[1]: *** [QtCore.so] Error 1
> make: *** [install] Error 2
>
> I eventually tracked down an issue here: See:
> http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17303.html
>. That says that the inc_path is incorrect: inc_path =
> [sipcfg.py_inc_dir], and should be changed to this: inc_path =
> [sipcfg.py_inc_dir, sipcfg.sip_inc_dir].
>
> Once I made this change, I got an incorrect ARCH error (arch=x86_64).
> SO I reconfigured and reinstalled SIP and PyQT selecting arch=i386
> during configure.py. That resulted in a successful build and
> installation.
>
> Now, I am testing this small program:
>
> import sys
> import platform
>
> from PyQt4.QtCore import *
> from PyQt4.QtGui import *
>
> app = QApplication(sys.argv)
>
> QMessageBox.information(app.parent(),
> 'PyQt Test',
> '<center><font size=+1><b>Basic About Box</b></font><br>'
> 'Test</center><br><br>'
> 'An application to demonstrate GUI programming with Python and
> Qt.<br><br>' 'Uses Python v%s with Qt v%s and PyQt v%s on %s.' %
> (platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR,
> platform.system()))
>
> This fails with this message:
>
> Traceback (most recent call last):
> File "/Users/flavio/pycon/PyQt/pyqt-I/01-about_box/about_box.py",
> line 4, in <module> from PyQt4.QtCore import *
> ImportError:
> dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.
>7/site-packages/PyQt4/QtCore.so, 2): Symbol not found: _sipQtConnect
> Referenced from:
> /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-
>packages/PyQt4/QtCore.so Expected in: flat namespace
> in
> /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-
>packages/PyQt4/QtCore.so
Your errors doesn't make any sense to me: the lib tries to dlopen
itself, _and_ bails out with a symbol not found message. Strange.
> It seems that I still have in incorrectly built or configure
> environment. Any advice here would be welcome. Should I remove
> everything and start over?
Likely the best idea. Clean up _every_ bit of Qt and PyQt in the system
dirs and start over.
> if so, are there any recommendations about
> how to overcome the initial failure in building PyQt?
Well, Macs are always a bit different - and differences between major
releases only contribute to the mess. Usually, you're able to build fat
binaries (that support both archs), but you need to read into the Qt
docs, how your version is build, and prepare your sip/PyQt builds
accordingly. (It's been a while, since I've built things on OSX, and
such knowledge rots quicker then anywhere else...)
Good luck,
Pete
More information about the PyQt
mailing list