compiling qt app extensions with distutils

Thomas Jollans t at jollybox.de
Fri Jul 22 14:43:05 EDT 2011


On 22/07/11 18:22, strattonbrazil wrote:
> I have a simple Qt app that renders a scene in OpenGL does some very
> basic geometry routines.  I originally was planning extending my app
> just by including Python.h and the corresponding lib possibly using
> pythonqt, but every time I brought it up on the python mailing list,
> many would say I should be extending it instead usually referencing
> this article (http://twistedmatrix.com/users/glyph/rant/
> extendit.html).  The article makes pretty good sense in most cases.  I
> could see the value of extending it as a module if my app ever wanted
> to be used a library, but then I would have to do the whole business
> of making a complex setup.py file to match the current Makefile.  I
> can't find any other docs on doing this to a Qt app/library though
> (especially since Trolltech uses the terms "extend" and "embed"
> interchangeably).  The article does seem to glean over the
> difficulties of extending a complex app and the python docs, at least,
> seem to present "embedding" python as just a viable and worthwhile
> option.

Okay, your terminology was confused: you want to extend Python, not your
application.

First of all, you don't technically need distutils: an extension module
is simply a shared library that you can build like any other library,
and I'm sure your build system can easily handle that. Then, you can
probably use bits of distutils to figure out where to install things to.

It may also be possible to subclass the distutils Extension class and
let it invoke your existing build system.

You could also turn your application into a library independent of
Python with your existing build infrastructure, and create a separate
Python module, with distutils, that links in turn to that library. This
would make building your project a two-part process, of course.

Lastly, depending on what your goals are, you might want to consider not
integrating Python with your application at all, but exposing what
functionality you want to expose to Python via dbus. You could write a
skeleton module that exposes dbus proxy objects to Python scripts /
modules to make life easier.

> 
> Like I said, the article made sense in theory, but at the same time I
> have limited time to work on my project and don't want to spend too
> much time trying to figure out out to create a Qt extension--
> especially since it looks like few others have actually done it.  Is
> there a way to build a simple python module from my existing
> makefile?  Or should I just stick with embedding for now using the
> existing makefile?  Thanks.
> 
> On Jul 22, 7:29 am, Thomas Jollans <t... at jollybox.de> wrote:
>> On 22/07/11 15:43, strattonbrazil wrote:
>>
>>> I'd like to extend my C++ Qt applicaition using distutils.  Looking
>>> over the tutorial docs (http://docs.python.org/extending/
>>> building.html#building), it seems fairly intuitive for simple
>>> examples, but I'm already using a rather complex qmake/Makefile system
>>> to get all my cpp files and libraries included.  Is it possible to
>>> take advantage of the existing makefile (http://pastebin.com/
>>> Ln3NCkNL)?
>>
>> What do you want to do?
>>
>> Distutils is used to build extension modules. Do you want to turn your
>> application into a Python module?
>>
>> It seams more likely that you want to embed Python in your application,
>> in which case you're looking at altogether the wrong documentation and
>> you simply have to link with libpythonX.Y like any other library
> 




More information about the Python-list mailing list