有没有办法让类装饰器在仅支持Python 2.5
的Google App Engine上工作?
或者我可以这样重新表述:是否可能从已经执行的同一进程中更改Python解析器的行为?例如:
good.py:
alter_python_parser()
import bad
bad.py:
@decorated
class Foo(object): pass
或者这根本是不可能的。
说明:我想使用一个第三方库,该库大量使用类装饰器,但我不想分叉它并维护自己的版本。另一种选择是在Typhoon App Engine
上运行我的代码,使用更新的Python版本,但我担心Google不会很长时间内升级他们的Python版本...
编辑:
创建一个new-style import hook怎么样?它可以进行即时字符串替换并从内存中加载模块。这应该是可能的。如果没有已经实现的方法,我会试一下。
但是我如何解析Python 2.6+
代码以及Python 2.5
?有没有仅限于Python的解析器?PYPY
使用了什么?
ast
可能会有所帮助。如果有一个 Python 实现_ast
模块,我可以使用导入钩子实时完成... - Attila O.lib2to3
中的ast
树修复类装饰器:http://pypi.python.org/pypi/seven。顺便说一下。 - Attila O.