scripts | ||
src | ||
.dockerignore | ||
.gitignore | ||
build.sh | ||
Dockerfile.bionic | ||
Dockerfile.disco | ||
Dockerfile.focal | ||
Dockerfile.trusty | ||
Dockerfile.xenial | ||
images.sh | ||
README.md |
extpython
Isolated python .deb builder
Extpython is a collection of tools for building installable packages containing various versions of Python. The installations are isolated from the operating system's python such that modules may be added, removed, or upgraded without risk of breaking. The builds are executed in Docker.
Example invocation:
./images.sh # pulls / creates base images with dependencies
./build.sh trusty-3.9.5.sh # build using the recipe in the named script file
The vars file - trusty-3.9.5.sh
above - contains information about what python version will be built. See
src/bionic-3.9.5.sh
for an annotated example.
Version support matrix
Ubuntu | P 2.7 | Python 3.6 | P 3.7 | Python 3.8 | P 3.9 |
---|---|---|---|---|---|
14.04 | 3.6.7 3.6.8 |
3.9.5* | |||
16.04 | 3.6.7 | 3.7.3 | 3.9.5 | ||
18.04 | 2.7.16 | 3.6.7 | 3.7.3 | 3.8.0a4 3.8.0b1 |
3.9.5 |
19.04 | 3.7.3 | ||||
20.04 | 3.9.5 |
* with extra extpython-openssl-1-1 package - see below
Openssl
Python 3.8 and 3.9 require a version of openssl that is newer than what ships on Ubuntu 14.04. This will likely happen with other os/version combinations in the future, but this is the only known case now.
To satisfy this requirement for Python 3.9, extpython also builds an Openssl package that installs in a similar isolated manner.
See ./ssl/
for details.
TODO
- Parameter for pre-loaded pip modules