看起来有一个弃用。那是怎么决定的? Python 3和Python 2之间有区别吗?
答案 0 :(得分:4)
旧版flask.ext
was deprecated in issue #1135,于2014年创建。实际弃用通知于2016年开启。reasoning behind the deprecation is:
新贡献者的一些介绍性信息:
Flask曾经将flaskext作为扩展名的命名空间,因此它们可以作为flaskext.foo导入。这不能很好地工作,所以引入了新形式flask_foo。 flask.ext.foo是一个兼容层,它将尝试导入这两个变体。见http://flask.pocoo.org/docs/0.10/extensions/
flask.ext.foo很难维护,而且由于现在所有扩展都已切换到新的包命名方案,因此不再值得。我们希望将其弃用为1.0,因此我们需要某种工具来帮助用户重写其应用中的所有旧导入。
可以写一个类似于这个野兽的Python脚本。这将完成工作,但正如其文档字符串所说,这是一个可怕的黑客。
lib2to3对于编写更大的迁移工具非常有用,但使用它并不重要。
- https://github.com/mitsuhiko/python-modernize/是基于它的,在我看来,这是最容易被扯掉的项目。
- 我无法找到对此有用的完整教程。大多数似乎都专注于移植到Python 3,这意味着在用户的代码库上运行默认的2to3修复程序(我们绝对不希望这样)。
- 我认为,必须阅读2to3和lib2to3的源代码才能理解。这可以通过在Google中输入libraryname hg.python.org来实现,其中库名是2to3或lib2to3。
- 在Python中执行源代码操作的当前状态很糟糕,我希望看到一个包装lib2to3的库,并提供更简洁的API。
旧的.ext是一个兼容层,用于在等待flaskext
标准化时支持旧的flask_
模块。
这将flask.
命名空间与每个模块的命名空间分开,因为模块现在完全位于其自己的模块(flask_module
)中,而不是加载到Flask中所有扩展的通用命名空间中。更明确的是,该模块不是作为Flask的一部分捆绑的。