GPL PyQt with LGPL Qt

July 4, 2009

UPD: Actually, it turned out that if you don’t want to mess with manual installation of PyQt from sources, and also don’t wish to make fixes in its code, there are easy to use Windows installers on official PyQt page (GPL only). For Python 2.6 it can be downloaded here. Installation process is smooth and runs without any problems. And it DOES work from the scratch with LGPL version of Qt, remaining GPL itself though.

While configuring environment for developing my CD/DVD burner I ran into an issue with PyQt licensing. From my experience and what I heard previously and read in Internet, I was sure that “free” version of PyQt can be used with the “free” version of Qt library. But despite the fact I have LGPL Qt 4.5.2 installed on my Windows machine, the PyQt configure.py script kept telling me that those two libraries have inconsistent licenses. The error message lacks details:

Error: This version of PyQt and the Desktop edition of Qt have incompatible licenses.

That seemed kind of strange to me, so I started a little investigation. I found the initial (I suppose so) request for LGPL version of PyQt: [PyQt] LGPL license. There’s a rather long discussion, even with participation of PyQt author – Phil Thompson, which resulted in nothing. The main thought is that Phill was going to consider – should or not there be PyQt under LGPL.

Since that post was a somewhat outdated, headed back to PyQt site to check current situation and read the following:

PyQt, unlike Qt, is not available under the LGPL.

That stroke me, since I’m not sure if Qt is distributed under GPL at all nowadays. The thoughts started crowding in my head – how to overcome this obstacle (in a good sence). But then finally I’ve read the section named “Compatibility with Qt licenses”:

The GPL version of PyQt can be used with both the LGPL and GPL versions of Qt.

So there should be no problem develop in GPL PyQt with LGPL Qt library. But the configure.py script was resilient – “licenses are different!”. And I decided to dig into installation script with IDLE debugger. It turned out that during initial configuration, PyQt detects my LGPL QT as “Desktop” version and its own – as “GPL”, consequently the comparison of these two fails.

At that moment I decided try to just comment out the fancy function checkLicenses() – and it worked out! Now, after 1,5 hours of investigation, I have a working version of GPL PyQt with LGPL Qt!

P.S. Perhaps, there’s some additional info about how to make GPL PyQt work with LGPL Qt – I don’t know, as I wasn’t able to find any. So I made a fix that I think is a problem with PyQt installation script relying on information found at official site. It’s perhaps an inappropriate method, and I discourage you from using it 😉

And, as it is stated in PyQt’s FAQ:

Riverbank is a product based software development company that depends on sales to fund PyQt’s continued development. […] An LGPL version of PyQt, while probably increasing the number of users, would result in a reduction in income and therefore our ability to fund future development.

So, no luck for us who wish to use PyQt under LGPL license.

Hi,

Here I’d like to share my goal for the next several weeks.

First of all, the main goal is to develop my skills in Python and to extend them as far as possible. To achieve this I decided, apart from reading books, to create a real application. So, the question was – what kind of software would be both interesting and challenging enough? Having though for a little time, I came with an idea: I’ll write a cross-platform CD/DVD burning application. And that’s why: I don’t like paying for software and I hate what Nero has turned into (a 700Mb monster), and none of free burning apps are good enough for me.

So, here are the main requirements for my future CD/DVD burner:

  1. Developed in Python. That’s point of the whole blog 🙂
  2. The code has to be perfect, written in Python style (not C++) and be reusable (useful for others).
  3. Cross-platform. Yes, Python runs on many OS itself, but the domain-logic is hardly portable. Main targets are Windows, Linux and Mac OS.
  4. User-friendly UI – it should be better than average open-source one (you know, those ugly designs you cannot look at without tears in your eyes). In my opinion, it has to be fun to work with software. Since, I’m not a designer at all and the budget is $0, it’s gonna be somewhat difficult to achieve 🙂
  5. It should be functional – be able to burn CDs/DVDs/Blu-Rays/Audio/Video/ISO and so on. In general, it should be able to work with any kind of media.
  6. The installation process has to be smooth and without a mess – in contradict to usual open-source software (./configure && make things)

So, the goal is set, the work is waiting. Hopefully this tale will be fun and educational. 🙂

Introductory post

June 30, 2009

Hello everyone. Just a few words about myself and what’s this blog about.

I’m a software developer with deep knowledge in C++, and it happens that I’m highly interested in Python programming language, the idiom behind it, the ease of use, etc.

So, lately my interest in Python overcame my native laziness and I finally decided to dive into it. And I’m going to post here my tale of mind-switching from C++ to Python.

Hopefully, someone will find the info here useful.

So, let’s start 🙂