如果我在应用程序中使用以下格式,则除PyCharms解析/自动完成功能外,其他所有功能均可用:
from flask.ext.sqlalchemy import SQLAlchemy
如果我在应用程序中使用以下格式,则一切正常。但是,a,这不是导入库的正确方法:
from flask_sqlalchemy import SQLAlchemy
有什么方法可以使PyCharm正确解析第一个语法?
该flask.ext命名空间是一个transistion命名空间,看到拓进口过渡部分的的瓶扩展开发文档:
一段时间以来,我们建议对Flask扩展使用名称空间包。实际上这是有问题的,因为存在许多不同的竞争名称空间包系统,并且pip会在不同系统之间自动切换,这给用户带来了很多问题。
和
Flask扩展名应该敦促用户从而flask.ext.foo不是flask_foo或从中导入,flaskext_foo 以便扩展名可以过渡到新的程序包名称而不会影响用户。
flask.ext.foo
flask_foo
flaskext_foo
因此,要在版本之间进行转换,flask.ext添加了别名,该别名将在导入flask_[name]时自动尝试导入软件包flask.ext.[name]。但是现在这种过渡尚无定论。你将不再找到仍然完全依赖的软件包flask.ext。
flask.ext
flask_[name]
flask.ext.[name]
因此,它是完全正常使用实际的模块名称和具有PyCharm自动完成了模块的内容。
你只有真正有在使用flask.ext,如果你还在使用扩展,需要兼容未来的旧版本。那个未来已经来临。