Core base snaps (e.g. core22, core24) provide a run-time environment with a minimal set of libraries that are common to many applications.
Core base snaps up to and including core24 bundle the Python interpreter alongside a selection of Python libraries. But from core26 onwards, Python packages will no longer be included. This change does not affect earlier core base snaps.
The majority of application snaps that need Python already stage Python independently. These snaps will not need to be modified.
If your snap relies on the Python interpreter provided by the core snap, and you are switching or planning to use the new core26 base and later versions, you will need to add the Python plugin to your snap.
Why are we making this change?
We continuously simplify core base snaps to remove unnecessary dependencies, improve maintainability, reduce attack surface, and keep the runtime environment minimal and predictable. In this context, core bases historically shipped some Python dependencies.
However, the recommended approach for snap creators has always been to use the Python plugin and bundle their own Python runtime inside their application snaps, including only the packages and dependencies they require. As a result, the Python interpreter and libraries provided by core snaps are often unused.
For this reason, starting with core26, the Python environment in the core base snap won’t be available at runtime.
This change better reflects how snaps are built and used today, where snap developers retain full control over their Python versions and dependencies. It also allows for the core base to be simplified. Over time, this will also allow for a reduction in the overall size of the core snaps.
How to manage the Python environment in your snap
Developers publishing snaps with Python-based parts can continue to use the Snapcraft Python plugin, which allows you to bundle the exact Python version and dependencies your application requires. Detailed guidance is available in the How-to Guide Craft a Python app
For projects that use Poetry or uv, developers should consider using the separate Snapcraft plugins built for these dependency management tools. A full list of available plugins and their usage is available in the Plugin Reference.
Impact on cloud-init
This change does not affect cloud-init usage, which will remain present and fully supported in this release.
However, since not every user requires cloud-init, a new track will be available for core26. This track will include cloud-init and the Python environment it needs.
Questions or comments?
If you have questions or concerns about this transition, please share them below.