PyQt6 or PySide6 for Commercial & Embedded Applications?

Understanding Qt licensing for Python apps you plan to sell or distribute without sharing source code
Heads up! You've already completed this tutorial.

If you're building a Python GUI application that you plan to sell — or distribute without sharing your source code — you've probably found yourself tangled up in licensing questions. PyQt6 or PySide6? GPL or LGPL? Can you even sell software built with these libraries?

You're not alone. Licensing is one of the most common sources of confusion for Python developers working with Qt -- it's one of the most common questions I get.

A quick disclaimer

I'm a developer, not a lawyer. What follows is a good-faith explanation of how these licenses typically apply to Python GUI projects. If your business depends on getting this exactly right, it's worth consulting someone with legal expertise in open source licensing.

The two libraries, and their licenses

Both PyQt6 and PySide6 let you build Qt-based GUIs in Python. They're very similar in terms of what you can build with them. The big difference — at least for this discussion — is how they're licensed.

  • PyQt6 is licensed under the GPL (specifically GPLv3).
  • PySide6 is licensed under the LGPL (specifically LGPLv3).

These two licenses have very different implications for your project.

Can you sell software built with either one?

Yes. Both the GPL and LGPL allow you to sell software commercially. There's a common misconception that "open source" means "free of charge," but that's not the case. You can absolutely charge money for software built with either library.

The licenses are about source code access, not about money.

What the GPL (PyQt6) requires

The GPL is what's called a copyleft license. When you distribute software that includes GPL-licensed code, the GPL requires that you also make the complete source code of your application available to the people who receive it.

This doesn't necessarily mean publishing your code on the internet for everyone. It means that anyone you give (or sell) the software to has the right to request and receive the full source code.

For many commercial projects, this is a deal-breaker. If your business model depends on keeping your source code private, distributing a GPL-licensed application will be an issue.

The GPLv3 and embedded devices

There's an additional wrinkle if you're building for embedded hardware — devices like a Raspberry Pi where users interact through a touchscreen and don't have general access to the file system.

The GPLv3 includes provisions specifically about embedded systems (sometimes referred to as the "anti-tivoization" clause). It requires that end users must be able to install and run modified versions of the software on the device. If your device is locked down so that owners can't modify or replace the software, distributing GPLv3-licensed code on that device is problematic.

So if you're building a kiosk-style application on a Raspberry Pi, where users only see your GUI and can't access the underlying system, the GPLv3 requirements of PyQt6 become difficult to satisfy.

What the LGPL (PySide6) requires

The LGPL is a more permissive form of copyleft. It still requires that you share source code, but only for the LGPL-licensed library itself — not for your application code.

In practice, this means:

  • If you modify PySide6's own source code, you need to share those modifications.
  • If you simply use PySide6 as a library in your application (which is what you're doing when you write a Python GUI), you don't need to share your application's source code.

For Python projects, this distinction almost always works in your favor. You're importing PySide6 and calling its classes and functions — you're not modifying the library's internals. So the LGPL's source-sharing requirement typically doesn't apply to your code.

So which one should you use?

If your situation looks anything like this:

  • You want to sell your application commercially
  • You don't want to share your source code with users
  • You're deploying to an embedded device where users only interact through a GUI

Then PySide6 (LGPL) is the straightforward choice. It lets you keep your application code private, sell the software, and deploy it on locked-down devices without running into licensing conflicts.

What if you really want to use PyQt6?

Riverbank Computing, the company behind PyQt6, offers a commercial license that you can purchase. This commercial license removes the GPL requirements, allowing you to distribute your application without sharing your source code. If you have a strong preference for PyQt6 — or you've already built a project with it — this is a viable path, though it does come with a cost.

A common scenario: the Raspberry Pi kiosk

One situation that comes up frequently is building a touchscreen application on a Raspberry Pi. The user sees only your GUI. They don't know what Qt is, they don't have programming knowledge, and you've locked the file system so nobody accidentally breaks things.

This is a perfectly reasonable setup. But it's exactly the kind of scenario where the GPLv3 creates friction, because the license expects owners of the kiosk to be able to modify and reinstall the software on the device.

With PySide6 under the LGPL, this isn't an issue. You can lock down the device, distribute your application, and keep your source code private — all without violating the license terms.

Summary

Here's a quick reference:

PyQt6 (GPL) PySide6 (LGPL)
Can you sell your app? Yes Yes
Must you share your source code? Yes, with anyone who receives the software Only if you modify PySide6 itself
Embedded/locked devices? Problematic under GPLv3 Fine under LGPL
Commercial license available? Yes (paid, from Riverbank Computing) Not needed for most use cases

If you're building a commercial or embedded Python application and you want to keep things simple, PySide6 is the path of least resistance. It gives you the same Qt functionality with licensing terms that fit naturally with closed-source, commercial distribution.

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

Create GUI Applications with Python & Qt6 by Martin Fitzpatrick

(PySide6 Edition) The hands-on guide to making apps with Python — Over 15,000 copies sold!

More info Get the book

Martin Fitzpatrick

PyQt6 or PySide6 for Commercial & Embedded Applications? was written by Martin Fitzpatrick.

Martin Fitzpatrick has been developing Python/Qt apps for 8 years. Building desktop applications to make data-analysis tools more user-friendly, Python was the obvious choice. Starting with Tk, later moving to wxWidgets and finally adopting PyQt. Martin founded PythonGUIs to provide easy to follow GUI programming tutorials to the Python community. He has written a number of popular Python books on the subject.