compiler"模块 py3k

8 投票
2 回答
1717 浏览
提问于 2025-04-16 06:39

我正在尝试把一个使用“compiler”模块的代码从2.x版本迁移到3.1版本,但在这一步我遇到了一个导入错误,

import compiler

因为这个模块在Python 3.x中不存在。请问它的功能有没有被整合到标准库的其他模块里?或者说它已经被完全移除了?

[编辑]我需要在Python 3中找到一个和compiler.parse.getChildren相同功能的替代方法。

2 个回答

5

这要看你想做什么了。抽象语法树的相关内容大部分已经转移到了ast模块里。

听说compile这个内置函数可以把一个AST对象编译成字节码,这样就大致上能处理compiler模块剩下的功能。不过我自己也没试过,所以你可能会有不同的体验。

7

根据文档,这个模块从Python 2.6开始就不再推荐使用,并在3.0版本中完全移除了。

来自PEP 3108的内容:

  • 同时维护内置的编译器和标准库包是多余的。
  • 编译器创建的抽象语法树(AST)是可以使用的。
  • 需要添加从抽象语法树编译的机制。

撰写回答