Pylint - Pylint无法导入flask.ext.wtf?

时间:2013-04-17 13:34:07

标签: python flask wtforms pylint

我的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库实际上只是库的“快捷方式”。

我知道如何解决这个问题吗?非常感谢!

3 个答案:

答案 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模块,请执行以下操作:

  1. pip install pylint-flask
  2. 运行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导入消息,邮件”