¿Generar .pyc desde Python AST?

¿Cómo generaría un archivo .pyc desde un AST de Python para poder importar el archivo desde Python?

He usado compile para crear un objeto de código, luego escribí el atributo co_code en un archivo, pero cuando bash importar el archivo desde Python, obtengo un ImportError: Bad magic number in output.pyc .

La solución se puede adaptar desde el módulo py_compile :

 import marshal import py_compile import time import ast codeobject = compile(ast.parse('print "Hello World"'), '', 'exec') with open('output.pyc', 'wb') as fc: fc.write('\0\0\0\0') py_compile.wr_long(fc, long(time.time())) marshal.dump(codeobject, fc) fc.flush() fc.seek(0, 0) fc.write(py_compile.MAGIC) 

La función estándar de compile proporciona esta función para Python 2.xy Python 3.x. Sin embargo, encontrará que la representación AST entre 2.xy 3.x es bastante diferente, así que prepárese para eso.