Sie sind auf Seite 1von 2

9/7/2014

Compiling Python Code

Compiling Python Code


July 12, 2003 | Fredrik Lundh

Python source code is automatically compiled into Python byte code by the CPython
interpreter. Compiled code is usually stored in PYC (or PYO) files, and is regenerated
when the source is updated, or when otherwise necessary.
To distribute a program to people who already have Python installed, you can ship
either the PY files or the PYC files. In recent versions, you can also create a ZIP archive
containing PY or PYC files, and use a small bootstrap script to add that ZIP archive to
the path.
To compile a Python program into an executable, use a bundling tool, such as:
Gordon McMillans installer (cross-platform)
Thomas Hellers py2exe (Windows)
Anthony Tuiningas cx_Freeze (cross-platform)
Bob Ippolitos py2app (Mac)
These tools puts your modules and data files in an archive file, and creates an
executable that automatically sets things up so that modules are imported from that
archive. Some tools can embed the archive in the executable itself.
If all you need is to wrap up a couple of Python scripts and modules into a single file,
Squeeze might be what you need. For Windows, my ExeMaker tool can also be quite
useful (on its own, or in combination with squeeze).

Compiling Python modules to byte code


Python automatically compiles Python source code when you import a module, so the
easiest way to create a PYC file is to import it. If you have a module mymodule.py,
just do:
>>> import mymodule

to create a mymodule.pyc file in the same directory. A drawback is that it doesnt


only compile the module, it also executes it, which may not be what you want.
(however, it does compile the entire script even if it fails to execute the script).
To do this programmatically, and without executing the code, you can use the
py_compile module:
import py_compile
py_compile.compile("mymodule.py")

Theres also a compileall module which can be used to compile all modules in an
entire directory tree.
import compileall
compileall.compile_dir("mylib", force=1)

More on byte code


Pythons byte code is portable between platforms, but not necessarily between Python
releases. The imp.get_magic() function returns a 4-byte string identifying the byte
code format used by the current interpreter.
You can use the compile function and the marshal module to compile Python code
into code objects, and convert such code objects to binary strings. To reverse this
process, use marshal to convert from strings to code, and use exec to execute code.
Examples to be added.
http://effbot.org/zone/python-compile.htm

1/2

9/7/2014

Compiling Python Code

rendered by a django application. hosted by webfaction.

http://effbot.org/zone/python-compile.htm

2/2

Das könnte Ihnen auch gefallen