Deploying Python applications

Page Status:Incomplete
Last Reviewed:2014-11-11


Supporting multiple hardware platforms


Meaning: x86, x64, ARM, others?

For Python-only distributions, it *should* be straightforward to deploy on all
platforms where Python can run.

For distributions with binary extensions, deployment is major headache.  Not only
must the extensions be built on all the combinations of operating system and
hardware platform, but they must also be tested, preferably on continuous
integration platforms.  The issues are similar to the "multiple Python
versions" section above, not sure whether this should be a separate section.
Even on Windows x64, both the 32 bit and 64 bit versions of Python enjoy
significant usage.

OS packaging & installers


- Building rpm/debs for projects
- Building rpms/debs for whole virtualenvs
- Building macOS installers for Python projects
- Building Android APKs with Kivy+P4A or P4A & Buildozer



- Building Windows installers for Python projects


Pynsist is a tool that bundles Python programs together with the Python-interpreter into a single installer based on NSIS. In most cases, packaging only requires the user to choose a version of the Python-interpreter and declare the dependencies of the program. The tool downloads the specified Python-interpreter for Windows and packages it with all the dependencies in a single Windows-executable installer.

The installer installs or updates the Python-interpreter on the users system, which can be used independently of the packaged program. The program itself, can be started from a shortcut, that the installer places in the start-menu. Uninstalling the program leaves the Python installation of the user intact.

A big advantage of pynsist is that the Windows packages can be built on Linux. There are several examples for different kinds of programs (console, GUI) in the documentation. The tool is released under the MIT-licence.

Application bundles


- py2exe/py2app/PEX
- wheels kinda/sorta

Configuration management