Differences between revisions 18 and 55 (spanning 37 versions)
Revision 18 as of 2007-12-29 17:22:35
Size: 1769
Editor: CameronLaird
Comment:
Revision 55 as of 2024-01-04 11:20:11
Size: 4263
Comment: Remove ShowMeDo content, since this now points to a dodgy website
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Tools for distributing Python software: General distribution of Python code is typically done using the [[Distutils]] package from the standard library which can produce source and binary distributions which depend on end-users having Python already installed on their computer (with Python Eggs being a form of software distribution provided by the [[Distutils]] derivative, [[setuptools]]). Such source and binary software distributions are frequently available as operating system packages (a more general form of the term "package" referring not just to code but also to documentation, resources and other things) and can be installed using the package management infrastructure employed by various operating systems - see "System Package Distribution" below.
Line 5: Line 5:
== General Package Distribution == == Executable Applications ==
The following projects support the production of executable application from Python scripts.
Line 7: Line 8:
General distribution of Python code is typically done using the [wiki:DistUtils distutils] package from the standard library which can produce source and binary distributions which depend on end-users having Python already installed on their computer. ||'''Package''' ||'''Target''' ||Latest update date ||Latest version ||'''Notes''' ||
||[[http://pypi.python.org/pypi/bbfreeze/|bbfreeze]]|| Python 2 || 2014-01-20 || 1.1.3 || Create standalone executables from python scripts||
||[[http://pypi.python.org/pypi/esky/|esky]]|| Python 2 & 3 || 2013-03-27 || 0.9.8 ||An auto-update framework built on top of bbfreeze||
||[[http://www.python.net/crew/atuining/cx_Freeze/|cx Freeze]]|| Python 2 || 2006-07-21 || 3.0.3 || a set of utilities for freezing Python scripts ||
||[[http://effbot.org/zone/exemaker.htm|ExeMaker]]|| Python 2 || 2004-10-12 || 1.2 || Creates EXE loaders for Python scripts (for Windows)||
||[[Freeze]]|| Python 2 & ( [[http://bugs.python.org/issue16047|3 when fixed]]) || Varies by python version || Varies by python version ||Bundled with Python in the "Tools" Directory as '''freeze.py''' allows building executables (Unix-only?)||
||[[http://www.py2exe.org/|py2exe]]|| Python 2 || 2008-11-16 || 0.6.9 ||Transform Python scripts into standalone Windows executable. See [[Py2Exe|py2exe]]||
||[[http://undefined.org/python/#py2app|py2app]]|| Python 2 & 3 || 2014-02-06 || 0.8 ||Converts Python scripts into executable Mac OS X applications||
||[[https://web.archive.org/web/20130804055507/http://davidf.sjsoft.com/mirrors/mcmillan-inc/install1.html|McMillan's Installer]]|| Python 2 || 2003-06-04 || 5b5_4 ||Includes notes about (other) distributing solutions||
||[[http://www.pyinstaller.org/|PyInstaller]]|| Python 2 || 2013-09-18 || 2.1 ||Derived from !McMillan's installer||
||[[http://jamercee.github.io/signet/|Signet]]|| Python 2 || 2014-07-28 || 1.0.10 ||Signet is a distutils extension for creating tamper resistant python, while still distributing python code.||
||[[https://pypi.python.org/pypi/pyarmor/|pyarmor]]|| Python 2 & 3 || 2018-10-29 || 4.1.4 || Obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts ||
Line 11: Line 23:
The following are projects which support the production of installers or stand-alone executables. Installers are sometimes needed to wrap up the output of freeze tools into packages:
Line 13: Line 25:
 * ["cx_Freeze"]
 * [http://effbot.org/zone/exemaker.htm ExeMaker] - Creates EXE loaders for Python scripts (for Windows)
 * ["Freeze"] & [wiki:Py2Exe py2exe] - building executables for Unix & Windows
 * [http://www.jrsoftware.org/isinfo.php Inno Setup] - use to wrap up the output of the above into a Windows exe
 * [[http://www.jrsoftware.org/isinfo.php|Inno Setup]] (Windows)
 * [[http://nsis.sourceforge.net/Main_Page|NSIS]] (Windows)
Line 18: Line 28:
 * [http://davidf.sjsoft.com/mirrors/mcmillan-inc/install1.html McMillan's Installer]
 * [http://undefined.org/python/#py2app py2app] - Converts Python scripts into executable Mac OS X applications
Line 21: Line 29:
See also:

 * [http://www.mcmillan-inc.com/install1.html McMillan's page] about (other) distributing solutions.
 * Thinki's Thinki:PythonInstallers.

See also:
== See also ==
Line 28: Line 31:
 * ["buildout"]  * [[buildout]]
 * [[deployment]] (an answer to the frequently asked question on the topic)
## * Thinki's Thinki:PythonInstallers. - This link is dead.
## * [http://web.archive.org/web/20030621135837/http://www.mcmillan-inc.com/install1.html McMillan's page] about (other) distributing solutions.
Line 32: Line 38:
Although [wiki:DistUtils distutils] supports the production of some system packages, other tools exist to make such packages: Although [[Distutils|Distutils]] supports the production of some system packages, other tools exist to make such packages:
Line 34: Line 40:
 * [http://www.showmedo.com/videos/video?name=linuxJensMakingDeb&fromSeriesID=37 ShowMeDo video] (and wiki) on how to create a Debian package (.deb) from a python program (.py). This is useful if you want to distribute to Debian based Linux Systems like [http://www.debian.org Debian] or [http://www.ubuntulinux.com Ubuntu].  * There are videos explaining how to create a Debian package (.deb) from a python program (.py). This is useful if you want to distribute to Debian based Linux Systems like [[http://www.debian.org|Debian]] or [[http://www.ubuntu.com/|Ubuntu]].
Line 36: Line 42:
== Distribution Using Virtualisation ==
Line 37: Line 44:
It is possible to distribute entire systems which can then be run under virtualisation or as "live CD" environments. Some solutions attempt to incorporate such approaches in a way which is transparent to the user:
Line 38: Line 46:

(Someone needs to explain eggs.)
 * [[http://en.wikipedia.org/wiki/LINA_%28software%29|LINA]] - running Linux-based applications on other systems (Inactive 2009)
----
CategoryDistutilsCookbook

Distribution Utilities

General distribution of Python code is typically done using the Distutils package from the standard library which can produce source and binary distributions which depend on end-users having Python already installed on their computer (with Python Eggs being a form of software distribution provided by the Distutils derivative, setuptools). Such source and binary software distributions are frequently available as operating system packages (a more general form of the term "package" referring not just to code but also to documentation, resources and other things) and can be installed using the package management infrastructure employed by various operating systems - see "System Package Distribution" below.

Executable Applications

The following projects support the production of executable application from Python scripts.

Package

Target

Latest update date

Latest version

Notes

bbfreeze

Python 2

2014-01-20

1.1.3

Create standalone executables from python scripts

esky

Python 2 & 3

2013-03-27

0.9.8

An auto-update framework built on top of bbfreeze

cx Freeze

Python 2

2006-07-21

3.0.3

a set of utilities for freezing Python scripts

ExeMaker

Python 2

2004-10-12

1.2

Creates EXE loaders for Python scripts (for Windows)

Freeze

Python 2 & ( 3 when fixed)

Varies by python version

Varies by python version

Bundled with Python in the "Tools" Directory as freeze.py allows building executables (Unix-only?)

py2exe

Python 2

2008-11-16

0.6.9

Transform Python scripts into standalone Windows executable. See py2exe

py2app

Python 2 & 3

2014-02-06

0.8

Converts Python scripts into executable Mac OS X applications

McMillan's Installer

Python 2

2003-06-04

5b5_4

Includes notes about (other) distributing solutions

PyInstaller

Python 2

2013-09-18

2.1

Derived from McMillan's installer

Signet

Python 2

2014-07-28

1.0.10

Signet is a distutils extension for creating tamper resistant python, while still distributing python code.

pyarmor

Python 2 & 3

2018-10-29

4.1.4

Obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts

Installers

Installers are sometimes needed to wrap up the output of freeze tools into packages:

See also

System Package Distribution

Although Distutils supports the production of some system packages, other tools exist to make such packages:

  • There are videos explaining how to create a Debian package (.deb) from a python program (.py). This is useful if you want to distribute to Debian based Linux Systems like Debian or Ubuntu.

Distribution Using Virtualisation

It is possible to distribute entire systems which can then be run under virtualisation or as "live CD" environments. Some solutions attempt to incorporate such approaches in a way which is transparent to the user:

  • LINA - running Linux-based applications on other systems (Inactive 2009)


CategoryDistutilsCookbook

DistributionUtilities (last edited 2024-01-04 11:20:11 by MarcAndreLemburg)

Unable to edit the page? See the FrontPage for instructions.