Skip to main content

a portable linux python

Project description

Plipy is a suite of tools for building and managing a portable linux python environment. It aims for a plipy environment to run on most major linux dsitros in use today, as well as a good number that should have been phased out of use many years ago. It’s similar in spirit to portable python but targeting linux instead of Windows.

The secret sauce is basically:

  • Using the autopackage build tools to hide newer glibc symbols, so that compiled libs can be used unmodified on older linux boxen.

  • Setting the rpath on all shared libs to a sensible value, so that their deps can be found regardless of where the plipy env is located.

Building a plipy environment

To build a plipy environment, you’ll need at least a recent gcc version and the “chrpath” tool. Initialise a new plipy env with the following command:

#> plipy PATH/TO/ENV init

This will build and set up a basic python installation (currently python 2.6.5) along with setuptools and pip. Most python packages can be installed directly using pip. For packages with more complex needs a plipy “recipe” is provided, and you can install them using e.g.:

#> plipy PATH/TO/ENV install py_wxpython

This would build and install a custom wxPython version that is patched to be more portable.

Using a plipy environment

In the top level of a plipy environment there are three shell scripts named “python”, “plipy” and “shell”. These set up some relevant environment vars and then chainload the appropriate command.

Here’s how you might install a third-party package using pip:

#>
#> PATH/TO/ENV/shell
plippy(ENV):$
plippy(ENV):$ pip install esky
...lots of output as esky is installed...
plippy(ENV):$
plippy(ENV):$ <ctrl-D>
#>

What is it good for?

Why, everything that something like portable python is good for, except on linux instead of Windows! Use it as a convenient portable scripting or testing environment, or to run multiple python versions side-by-side.

One thing it’s particular good for (actually, the reason it was created) is building frozen Python apps on linux. Plipy comes with recipes for patched versions of cx-freeze and bbfreeze that will build stand-alone applications having the same portability as the plipy env itself - meaning they should run anywhere from ancient Red Hat distros to the latest Ubuntu release.

References

Project details


Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page