【发布时间】:2015-03-13 14:47:12
【问题描述】:
我使用 python3.4 的 ast 模块来获取文件中的导入和函数调用。
如果我在具有 python3.4 语法的文件上运行代码,它可以正常工作,但如果我尝试解析较旧的 python2.7 版本的文件(对于打印语句,除了具有“,”的语句除外ETC)。
有没有办法强制 ast 在处理旧文件时使用 python2.7 编译器并在处理 python3.4 文件时使用 python3.4 编译器? 有没有其他方法可以解决这个问题??
【问题讨论】:
-
Python3 解释器不包含 Python2 解析器(反之亦然)。如果我很难做到这一点,我会运行 Python 2 解释器的下属
multiprocessing实例。我很确定这两个版本之间的 AST 不一致,因此您必须编写 v3.x AST 提取代码的 v2.7 版本。 -
有什么例子可以说明如何做到这一点?我已经测试了我的 AST 代码,它分别适用于两个版本。目前我正在尝试从 v2.7 运行代码,并希望以某种方式使用 v3.4 ast 解析器创建树。
标签: python-2.7 abstract-syntax-tree python-3.4