Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
126 lines (79 sloc) 3.63 KB
decompyle -- A Python byte-code decompiler
'decompyle' converts Python byte-code back into equivalent Python
source. It accepts byte-code from any Python version starting with 1.5
up to 2.3.
The generated source is very readable: docstrings, lists, tuples and
hashes get pretty-printed.
'decompyle' may also verify the equivalence of the generated source by
by compiling it and comparing both byte-codes.
'decompyle' is based on John Aycock's generic small languages compiler
'spark' ( and his prior work on
Additional note (3 July 2004, Ben Burton):
The original website from which this software was obtained is no longer
available. It has now become a commercial decompilation service, with
no software available for download.
Any developers seeking to make alterations or enhancements to this code
should therefore consider these debian packages an appropriate starting
* decompyles Python byte-code into equivalent Python source
* decompyles byte-code from Python versions 1.5 up to 2.3
* pretty-prints docstrings, hashes, lists and tuples
* supports an option for verifing the generated Python source is
equivalent to the byte-code. This is done by compiling the
generated source and comparing both byte-codes.
* decompyles and successfully verifies 100% of the Python 1.5, 2.0,
2.1 and 2.2 library
* decompyles and successfully verifies 100% of the Python 1.5
library, including lib-stdwin, lib-tk, gnome and gtk.
* reads directly from .pyc/.pyo files, bulk-decompyle whole
* output may be written to file, a directory or to stdout
* option for including byte-code disassembly into generated source
* If translation fails, the part causing the problem is output. This
helps improofing 'decompyle'. If this happens to you, please
contact the author.
For a list of changes please refer to the 'CHANGES' file.
'decompyle' requires Python 2.2 or later.
You may either create a RPM and install this, or install directly from
the source distribution.
Creating RPMS:
python bdist_rpm
If you need to force the python interpreter to eg. pyton2:
python2 bdist_rpm --python=python2
Installation from the source distribution:
python install
To install to a user's home-dir:
python install --home=<dir>
To install to another prefix (eg. /usr/local)
python install --prefix=/usr/local
If you need to force the python interpreter to eg. pyton2:
python2 install
For more information on 'Installing Python Modules' please refer to
decompyle -h prints short usage
decompyle --help prints long usage
Known Bugs/Restrictions
* EXTENDED_ARG token is untested (this is a new token for Python 2.0
which is used only if many items exist within a code object).
* Verifying decompyled source with optizimzed byte code (.pyo) when
running without optimizations (option '-O' not given) fails in most
cases. Same is true for vis-a-versa. This is due to the fact that
Python generated different bytecode depending on option '-O'.
* Python 2.2 generated different byte-code than prior version for the
same source. This is due the intruduction of iterators. Currently
'decompyle' fails verifying this source if the byte-code was
generated by an older version of Python.