To learn a bit more about I put together a snap for Python 3.6.0, which can be installed with:
snap install --edge python36-jamesh You can then run "python36-jamesh.python3", which will give you the a Python shell running with strict confinement, with the full standard library available. Now I know Snapcraft already has support for packaging Python applications, so what benefits does this package add? There were a few extra points in how I built the package: 1. the interpreter binary and extension modules all have appropriate $ORIGIN relative rpath set. 2. a sitecustomize.py is provided that will add $SNAP/lib/python3.6/site-packages to sys.path. (more on why this is useful later) This makes the interpreter fully relocatable in the file system while still being able to find the bundled libraries. In turn, this means the interpreter is functional when exported to another snap via the content interface. To demonstrate this, I put together a trivial "hello world" snapcraft project here: https://github.com/jhenstridge/python-snap-pkg/tree/master/examples/hello-world After building this package, it can be run after installing and connecting the interface: $ snap install --dangerous hello-world_0.1_amd64.snap hello-world 0.1 installed $ snap connect hello-world:python3 python36-jamesh:python3 $ hello-world Hello world! Since the hello-world snap doesn't actually include Python, it is quite light weight (4 kB, which I think is as small as a squashfs gets). The space savings may not be that great with a single snap (the interpreter snap is almost 20MB), but the space savings increase as you install more snaps using the interface. It also means that we could upgrade to Python 3.6.1 (when it comes out) without rebuilding this snap. And since the interpreter is being run under the hello-world snap's confinement policy, it can do potentially do things the main "python36-jamesh.python3" binary can't. For example, if you add the "network" plug, you'll be able to access the network. And the sitecustomize script will also mean the interpreter can locate packages shipped in the plug snap. I'd be interested in any suggestions or feedback about the snap. Thanks, James. -- Snapcraft mailing list Snapcraft@lists.snapcraft.io Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/snapcraft