我的Pylint安装导入烧瓶就好了。使用相同的烧瓶安装,我的wtforms在我的应用程序中运行得很好。但是,当我在导入wtforms的文件上运行Pylint时:
from flask.ext import wtf
from flask.ext.wtf import validators
class PostForm(wtf.Form):
content = wtf.TextAreaField('Content', validators=[validators.Required()])
从Pylint我得到:
E: 1,0: No name 'wtf' in module 'flask.ext'
E: 2,0: No name 'wtf' in module 'flask.ext'
F: 2,0: Unable to import 'flask.ext.wtf'
在搜索时我发现this discussion表明这可能是因为flask.ext库实际上只是库的“快捷方式”。
我知道如何解决这个问题吗?非常感谢!
答案 0 :(得分:25)
所以flask.ext
实际上是Armin以一种很棒的方式编写的自定义导入程序。它允许人们在单独的包中安装flask的扩展,但以一致的方式导入它们。 (真的,你应该去阅读它的代码。太棒了。)那就是说,显然pylint并不欣赏优雅(在我看来这实际上是一个bug),但你很幸运。解决这个问题的简单方法是执行以下操作
import flask_wtf as wtf
# The above is the equivalent line as:
# from flask.ext import wtf
from flask_wtf import validators
# This is the same as:
# from flask.ext.wtf import validators
这应该让pylint感到高兴。它不如使用flask.ext
那么好,但你必须选择关闭pylint或使用优雅的代码,但你不能同时拥有它们(现在)。
答案 1 :(得分:7)
我已经厌倦了这个bug一段时间了,我创建了一个pylint插件来解决这个问题。代码位于https://github.com/jschaf/pylint-flask
要启用pylint以“查看”flask.ext模块,请执行以下操作:
pip install pylint-flask
pylint --load-plugins=pylint_flask <your module>
答案 2 :(得分:0)
使用flask_&lt;&gt;而不是flask.ext。&lt;&gt;
使用“来自flask_wtf导入验证器的 ”而不是“来自flask.ext.wtf导入验证器”
面对邮件和邮件模块的同样问题。 不得不使用“来自flask_mail导入消息,邮件”而不是“来自于flask.ext.mail导入消息,邮件”