[PyQt] Compiling PyQt on Mac OS X

Daniel Miller daniel at keystonewood.com
Tue Aug 19 21:54:54 BST 2008


I'm having problems compiling PyQt on Mac OS X.


Library versions:

Mac OS X 10.4.11
Python 2.5.1
qt-mac-opensource-src-4.4.1
PyQt-mac-gpl-4.4.3
sip-4.7.8-snapshot-20080817


Commands used to compile SIP:

$ python configure.py -n -s MacOSX10.4u.sdk
$ make


Commands used to compile Qt:

$ ./configure -release -nomake examples -nomake demos -no-qdbus - 
universal -no-framework
$ make
$ sudo make install


Commands used to compile PyQt (this is where the problems start):

$ python configure.py -q /usr/local/Trolltech/Qt-4.4.1/bin/qmake -e  
QtCore -e QtGui

Results in the following output:

Determining the layout of your Qt installation...
This is the GPL version of PyQt 4.4.3 (licensed under the GNU General  
Public
License) for Python 2.5.1 on darwin.

Type '2' to view the GPL v2 license.
Type '3' to view the GPL v3 license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.

Do you accept the terms of the license? yes
Checking to see if the QtGui module should be built...
QtDesigner module disabled with universal binaries.
Qt v4.4.1 free edition is being used.
SIP 4.7.8-snapshot-20080817 is being used.
The Qt header files are in /usr/local/Trolltech/Qt-4.4.1/include.
The shared Qt libraries are in /usr/local/Trolltech/Qt-4.4.1/lib.
The Qt binaries are in /usr/local/Trolltech/Qt-4.4.1/bin.
The Qt mkspecs directory is in /usr/local/Trolltech/Qt-4.4.1.
These PyQt modules will be built: QtCore QtGui.
The PyQt Python package will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site- 
packages.
The Designer plugin will be installed in
/usr/local/Trolltech/Qt-4.4.1/plugins/designer.
The PyQt .sip files will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/share/sip/PyQt4.
pyuic4, pyrcc4 and pylupdate4 will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/bin.
Generating the C++ source for the QtCore module...
sip: sip/QtCore/qtimer.sip:54: SIP_RXOBJ_CON and SIP_SLOT_CON must  
both be given and at most once
Error: Unable to create the C++ code.


So I changed qtimer.sip line  54 from this:

     static void singleShot(int msec, SIP_RXOBJ_CON receiver / 
SingleShot/, SIP_SLOT_CON() member) ...

to this:

     static void singleShot(int msec, SIP_RXOBJ_CON, SIP_SLOT_CON()) ...


And run configure again, which results in this output:

Determining the layout of your Qt installation...
This is the GPL version of PyQt 4.4.3 (licensed under the GNU General  
Public
License) for Python 2.5.1 on darwin.

Type '2' to view the GPL v2 license.
Type '3' to view the GPL v3 license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.

Do you accept the terms of the license? yes
Checking to see if the QtGui module should be built...
QtDesigner module disabled with universal binaries.
Qt v4.4.1 free edition is being used.
SIP 4.7.8-snapshot-20080817 is being used.
The Qt header files are in /usr/local/Trolltech/Qt-4.4.1/include.
The shared Qt libraries are in /usr/local/Trolltech/Qt-4.4.1/lib.
The Qt binaries are in /usr/local/Trolltech/Qt-4.4.1/bin.
The Qt mkspecs directory is in /usr/local/Trolltech/Qt-4.4.1.
These PyQt modules will be built: QtCore QtGui.
The PyQt Python package will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site- 
packages.
The Designer plugin will be installed in
/usr/local/Trolltech/Qt-4.4.1/plugins/designer.
The PyQt .sip files will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/share/sip/PyQt4.
pyuic4, pyrcc4 and pylupdate4 will be installed in
/Library/Frameworks/Python.framework/Versions/2.5/bin.
Generating the C++ source for the QtCore module...
Creating the Makefile for the QtCore module...
Generating the C++ source for the QtGui module...
sip: sip/QtGui/qapplication.sip:42: syntax error
Error: Unable to create the C++ code.


So I commented out the '%If (WS_X11) ...' block in qapplication.sip  
(since I'm not compiling against X11, and that block seems to be the  
holdup). At this point the configure succeeds. So I go on to the next  
step:

$ make
make[1]: Nothing to be done for `all'.
g++ -c -pipe -fPIC -arch ppc -arch i386 -isysroot /Developer/SDKs/ 
MacOSX10.4u.sdk -Os -Wall -W -DQT_NO_DEBUG -DQT_CORE_LIB -I. -I/ 
Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -I/ 
usr/local/Trolltech/Qt-4.4.1/mkspecs/default -I/usr/local/Trolltech/ 
Qt-4.4.1/include/QtCore -I/usr/local/Trolltech/Qt-4.4.1/include -o  
sipQtCorecmodule.o sipQtCorecmodule.cpp
sip/QtCore/qobject.sip: In function 'int qtcore_py_to_qt_cpp 
(PyObject*, const sipSigArg*, void*)':
sip/QtCore/qobject.sip:1033: error: 'sipAssignInstance' was not  
declared in this scope
sip/QtCore/qobject.sip:1064: error: 'sipAssignMappedType' was not  
declared in this scope
sip/QtCore/qobject.sip: In function 'int qtcore_py_to_qt_cpp 
(PyObject*, const sipSigArg*, void*)':
sip/QtCore/qobject.sip:1033: error: 'sipAssignInstance' was not  
declared in this scope
sip/QtCore/qobject.sip:1064: error: 'sipAssignMappedType' was not  
declared in this scope
sip/QtCore/qobject.sip: In function 'PyObject*  
qtcore_PyArgumentStorage(const char*, PyObject*)':
sip/QtCore/qobject.sip:1279: error: 'sipParseType' was not declared  
in this scope
sip/QtCore/qobject.sip: In function 'PyObject*  
qtcore_PyArgumentStorage(const char*, PyObject*)':
sip/QtCore/qobject.sip:1279: error: 'sipParseType' was not declared  
in this scope
sip/QtCore/qobject.sip: In member function 'void PyQtProxy::unislot 
(void**)':
sip/QtCore/qobject.sip:1932: error: 'sipInvokeSlot' was not declared  
in this scope
sip/QtCore/qobject.sip:1939: error: 'SIP_SINGLE_SHOT' was not  
declared in this scope
sip/QtCore/qobject.sip: In static member function 'static PyObject*  
PyQtProxy::invokeSlot(const sipSlotConnection&, void**)':
sip/QtCore/qobject.sip:1970: error: 'sipInvokeSlot' was not declared  
in this scope
sip/QtCore/qobject.sip: In member function 'void PyQtProxy::unislot 
(void**)':
sip/QtCore/qobject.sip:1932: error: 'sipInvokeSlot' was not declared  
in this scope
sip/QtCore/qobject.sip:1939: error: 'SIP_SINGLE_SHOT' was not  
declared in this scope
sip/QtCore/qobject.sip: In static member function 'static PyObject*  
PyQtProxy::invokeSlot(const sipSlotConnection&, void**)':
sip/QtCore/qobject.sip:1970: error: 'sipInvokeSlot' was not declared  
in this scope
sip/QtCore/qobject.sip: In function 'const QMetaObject*  
qtcore_qt_metaobject_worker(PyTypeObject*, sipWrapperType*)':
sip/QtCore/qobject.sip:3078: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip: In function 'const QMetaObject*  
qtcore_qt_metaobject_worker(PyTypeObject*, sipWrapperType*)':
sip/QtCore/qobject.sip:3078: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip:3143: error: 'sipParseType' was not declared  
in this scope
sip/QtCore/qobject.sip:3200: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip:3143: error: 'sipParseType' was not declared  
in this scope
sip/QtCore/qobject.sip:3200: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip: In function 'const QMetaObject*  
qtcore_qt_metaobject(sipWrapper*, sipWrapperType*, const QMetaObject*)':
sip/QtCore/qobject.sip:3420: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip: In function 'PyObject*  
qtcore_staticMetaObject_helper(PyObject*)':
sip/QtCore/qobject.sip:3432: error: 'sipIsExactWrappedType' was not  
declared in this scope
sip/QtCore/qobject.sip: In function 'const QMetaObject*  
qtcore_qt_metaobject(sipWrapper*, sipWrapperType*, const QMetaObject*)':
sip/QtCore/qobject.sip:3420: error: 'struct _sipTypeDef' has no  
member named 'td_qt'
sip/QtCore/qobject.sip: In function 'PyObject*  
qtcore_staticMetaObject_helper(PyObject*)':
sip/QtCore/qobject.sip:3432: error: 'sipIsExactWrappedType' was not  
declared in this scope
sip/QtCore/qobject.sip: In function 'PyObject* func_pyqtSignature 
(PyObject*, PyObject*)':
sip/QtCore/qobject.sip:583: error: 'sipKwds' was not declared in this  
scope
sip/QtCore/qobject.sip: In function 'PyObject* func_pyqtSignature 
(PyObject*, PyObject*)':
sip/QtCore/qobject.sip:583: error: 'sipKwds' was not declared in this  
scope
lipo: can't open input file: /var/tmp//ccgUWyW3.out (No such file or  
directory)
make[1]: *** [sipQtCorecmodule.o] Error 1
make: *** [all] Error 2


What's going on here? I never had this much trouble compiling PyQt  
before. Have a missed something along the way? Thanks in advance for  
helping.

~ Daniel



More information about the PyQt mailing list