PyCharm解析 - flask.ext.sqlalchemy vs flask_sqlalchemy

Har*_*ith 23 python pycharm flask python-2.7 flask-sqlalchemy

如果我在我的应用程序中使用以下格式,除PyCharms解析/自动完成功能外,一切正常:

from flask.ext.sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)

如果我在我的应用程序中使用以下格式,一切正常.但是,唉,这不是导入库的正确方法:

from flask_sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)

有没有办法让PyCharm正确解析第一个语法?

Mar*_*ers 39

flask.ext命名空间是一个transistion命名空间,看到拓进口过渡部分的的瓶扩展开发文档:

有一段时间我们建议使用Flask扩展的命名空间包.这在实践中证明是有问题的,因为存在许多不同的竞争命名空间包系统并且pip将在不同系统之间自动切换,这给用户带来了很多问题.

Flask扩展应该敦促用户导入flask.ext.foo而不是flask_foo或者flaskext_foo 使扩展可以转换到新的包名而不影响用户.

因此,为了在版本之间进行转换,flask.ext添加了别名,这将在导入flask_[name]时自动尝试导入包flask.ext.[name].但这种转变现在没有实际意义; 你不会再找到仍然完全依赖的包裹flask.ext.

因此,使用实际的模块名称并使PyCharm自动完成模块内容是完全正确的.

你只有真正使用flask.ext,如果你还在使用扩展的旧版本,并且需要是未来兼容.那个未来已经来了.


lep*_*ure 9

仅供参考.flask.ext不推荐使用,正确的方法是:

from flask_sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)

如果有人在谷歌上发现了这个问题.