如果我在我的应用程序中使用以下格式,除PyCharms解析/自动完成功能外,一切正常:
from flask.ext.sqlalchemy import SQLAlchemy
如果我在我的应用程序中使用以下格式,一切正常。但是,唉,这不是导入库的正确方法:
from flask_sqlalchemy import SQLAlchemy
有没有办法让PyCharm正确解析第一个语法?
答案 0 :(得分:38)
flask.ext
命名空间是 transistion 命名空间,请参阅 Flask扩展开发文档的Extension Import Transition section:
有一段时间我们建议使用Flask扩展的命名空间包。这在实践中证明是有问题的,因为存在许多不同的竞争命名空间包系统,并且pip会在不同系统之间自动切换,这给用户带来了很多问题。
和
Flask扩展程序应敦促用户从
flask.ext.foo
而不是flask_foo
或flaskext_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。
在打开的“选择Python解释器”对话框中, 选择所需的Python可执行文件,然后单击“确定”。
此外,尝试将 requirements.txt 添加到项目的根目录中,之后PyCharm会通知您安装可能有帮助的缺失依赖项。