Getting a module's code object
__peter__ at web.de
Thu Aug 25 17:07:33 CEST 2011
Arnaud Delobelle wrote:
> In Python 3, a function f's code object can be accessed via f.__code__.
> I'm interested in getting a module's code object, i.e. the code that
> is executed when the module is run. I don't think it's accessible via
> the module object itself (although I would be glad if somebody proved
> me wrong :). In the marshal module docs  it is mentioned that:
> The marshal module exists mainly to support reading and writing the
> “pseudo-compiled” code for Python modules of .pyc files.
> So it seems that the module's code object is marshalled into the .pyc
> file - so there may be a way to unmarshal it - but I can't easily find
> information about how to do this.
> Is this a good lead, or is there another way to obtained a module's code
Taken from pkgutil.py:
# This helper is needed in order for the PEP 302 emulation to
# correctly handle compiled files
magic = stream.read(4)
if magic != imp.get_magic():
stream.read(4) # Skip timestamp
Alternatively you can compile the source yourself:
module = compile(source, filename, "exec")
More information about the Python-list