I want to add a Python 3.7 (3.7.0 not yet released) snap [0] to the store. If you look at the git repo [1], you’ll notice I grab the upstream release tarball and build it.
Why did I make the snap and why use “classic” confinement?
I could build a Docker image with Python 3.7 installed. The problem is that for it to work, I need to mount host directories into the container to get work done.
Snaps with classic confinement allows a user, like myself, to operate on data on the host. My workflow is: install Python, use pipenv to create virtualenvs, run some Python code.
On many Linux distributions, such as Ubuntu, installing Python versions other than the system install is (arguably) not straightforward. There’s the deadsnakes ppa but it’s not available on all distros. Other distros have their own convoluted ways. BSDs have a ports system which is much more suited to the task.
Snaps are meant to be universal Linux packages. Snaps also allow users to have concurrent installs of minor and/or patch releases of Python, like 3.6.0, 3.6.1, 3.6.2, 3.7.0b1, etc. These may not be general use cases but are very useful nonetheless.
This is to get the ball rolling. Maybe the community will step up and make more snaps. Or maybe I would, if/when given the opportunity.
I’m still very new to building snaps. Please bear with me as I learn the ropes.
[0] https://dashboard.snapcraft.io/snaps/python37/revisions/5/review/
[1] https://github.com/aikchar/snap-python37