2010-11-06 9 views
7

Estoy tratando de portar una base de código que usa el módulo "compilador" de 2.x a 3.1; Obtengo un ImportError enmódulo "compilador" py3k

import compiler 

porque el módulo no existe en Python3.x; ¿Se ha integrado la misma funcionalidad en otro módulo dentro de la biblioteca estándar? ¿O ha sido eliminado por completo?

[EDIT] requiero un equivalente para compiler.parse.getChildren en Py3k.

+0

Similar a, aunque no idéntico a: http://stackoverflow.com/questions/909092/why-is-the-compiler-package-discontinued-in-python-3 –

Respuesta

6

According to the docs, el módulo ha quedado obsoleto desde 2.6 y se ha eliminado por completo en 3.0.

De PEP 3108:

  • tener que mantener tanto el compilador incorporado y el paquete stdlib es redundante (24).
  • El AST creado por el compilador está disponible (23).
  • Se debe agregar el mecanismo para compilar desde un AST.
5

Depende de lo que quieras hacer. El material del árbol de sintaxis abstracta se ha movido en gran medida al módulo ast.

Al parecer, la función integrada compile puede compilar un objeto AST para bytecode que (groseramente) maneja la funcionalidad restante del módulo compiler. Tampoco he hecho esto así que YMMV.