Skip to content
Python Shell
Branch: master
Clone or download

Latest commit

tyl12 pyobfuscate:support generator and decorator obfuscate.
Signed-off-by: Teng Yiliang <>
Latest commit 47cc6e4 Nov 29, 2013


Type Name Latest commit message Commit time
Failed to load latest commit information.
.cvsignore Added .cvsignore Feb 17, 2004
LICENSE Added distutils files Feb 17, 2004
Makefile Shipping in zip-format as well. Jul 9, 2004
README Added note about decompyle. Feb 17, 2004
TODO Last commit was a mistake; fixed up last submitted TODO entries. Jul 9, 2004
pyobfuscate pyobfuscate:support generator and decorator obfuscate. Nov 29, 2013
pyobfuscate-install Fixed copyright style Sep 28, 2011
pyobfuscate.cmd Yet another email change Feb 8, 2007 Yet another email change Feb 8, 2007
setup.cfg Added distutils files Feb 17, 2004 Yet another email change Feb 8, 2007


pyobfuscate - Python source code obfuscator

pyobfuscate is a source code obfuscator: It makes Python source code
hard to read for humans, while still being executable for the Python

Why obfuscate?

Obfuscation makes little sense for Open Source
( programs, but vendors developing
commercial applications are usually not happy with shipping the
original source code to customers. 

Several obfuscators for other languages, like Java, already
exists. With Python, the problem is even more severe than with Java,
because Python bytecode is not compatible between different Python
versions. Also, bytecode is very easy to "decompile" to source code by
using "decompyle":

If shipping original source code is the only option for distributing
Python applications, then many vendors might choose another
programming language instead. 

What does pyobfuscate do?

pyobfuscate transforms the source code in several ways. Some of these
transformations are reversible (can be "un-obfuscated"); some are
not. Here's a list of what pyobfuscate currently does:

* Removes comments and docstrings (not reversible)

* Changes indentation (reversible)

* Adds whitespace between tokens (somewhat reversible)

* Renames functions, classes and variables (not reversible)

* Inserts bogus lines instead of blank lines. 


pyobfuscate operates on one single source file at a time. It does not
obfuscate the interface between several files. 

pyobfuscate cannot obfuscate methods, class variables or other
attributes, currently. See the TODO for more information.

You can’t perform that action at this time.