Licensing between PyQt5 and PySide2

Heads up! You've already completed this tutorial.

trantrongtri7993 | 2020-10-18 06:09:26 UTC | #1

I am new to this and after reading your blog, I couldn't help but wonder: given that there are not much differences between the two, and PySide2 is subject to LGPL (i.e. pretty much free opensource) while PyQt5 is subject to a more stringent license GPL or needs to be paid for commercial project, why would anyone use PyQt5?

Or is my understanding of LGPL wrong? If I am to build something commercial with PySide2, what necessary actions do I need to follow?


martin | 2020-11-19 11:20:48 UTC | #2

Hi @trantrongtri7993 welcome to the forum!

Your understanding of sounds correct (although GPL is also open source, just comes with additional obligations).

The first reason for using PyQt5 was that it existed! The initial release was in (2016) before PySide2 (2018) -- and the early releases of PySide2 were quite buggy. The upshot of that was that more people used PyQt5 and that built momentum in its favour.

While the GPL adds additional obligations, for many use cases that isn't actually a problem. I started using PyQt5 it for academic research software for example, and open source licenses are standard there. In commercial software many companies are happy to pay the license fee in exchange for support + the ability to use their own proprietary license (vs. the LGPL).

I use both but probably still default to PyQt5 -- I prefer the way it handles .ui files. The good news is that it really doesn't matter. I'd recommend trying both and converting something from one to the other, just to see how easy it is!


Over 10,000 developers have bought Create GUI Applications with Python & Qt!

To support developers in [[ countryRegion ]] I give a [[ localizedDiscount[couponCode] ]]% discount with the code [[ couponCode ]] — Enjoy!

For [[ activeDiscount.description ]] I'm giving a [[ activeDiscount.discount ]]% discount with the code [[ couponCode ]] — Enjoy!

Well done, you've finished this tutorial! Mark As Complete
[[ user.completed.length ]] completed [[ user.streak+1 ]] day streak