PyCharm解析 - flask.ext.sqlalchemy vs flask_sqlalchemy

时间:2014-08-27 02:36:15

标签: python python-2.7 flask pycharm flask-sqlalchemy

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

from flask.ext.sqlalchemy import SQLAlchemy

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

from flask_sqlalchemy import SQLAlchemy

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

3 个答案:

答案 0 :(得分:38)

flask.ext命名空间是 transistion 命名空间,请参阅 Flask扩展开发文档的Extension Import Transition section

  

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

  

Flask扩展程序应敦促用户从flask.ext.foo而不是flask_fooflaskext_foo 导入,以便扩展程序可以转换为新的程序包名称,而不会影响用户。

因此,对于版本之间的转换,添加了flask.ext别名,这会在导入flask_[name]时自动尝试导入flask.ext.[name]个包。但这种转变现在没有实际意义;您不再会发现仅依赖于flask.ext的软件包。

因此,使用实际模块名称​​完全正常并让PyCharm自动完成模块内容。

如果您仍在使用旧版本的扩展程序并且需要将来兼容,那么您只有 才能使用flask.ext。那个未来已经到了。

答案 1 :(得分:7)

FYI。不推荐flask.ext,正确的方法是:

from flask_sqlalchemy import SQLAlchemy

如果有人在Google上发现了这个问题。

答案 2 :(得分:1)

使用virtualenv并在PyCharm中为您的项目设置virtualenv。我遇到了和你一样的问题,在设置了正确的virtualenv(包含烧瓶和flask_sqlalchemy扩展名)之后,我的问题就解决了。

在PyCharm(from JetBrains Web Help)中为您的项目设置virtualenv:

  

将现有虚拟环境添加到可用列表中   口译       在项目设置的Project Interpreter页面中,单击。       在下拉列表中,选择Add local。

     

enter image description here

     

在打开的“选择Python解释器”对话框中,   选择所需的Python可执行文件,然后单击“确定”。

此外,尝试将 requirements.txt 添加到项目的根目录中,之后PyCharm会通知您安装可能有帮助的缺失依赖项。

相关问题