2013-04-17 29 views
17

我有我的Pylint安装导入瓶就好了。并且使用相同的烧瓶安装,我的应用程序中wtforms运行得很好。然而,当我在文件上运行pylint的进口wtforms:Pylint - Pylint无法导入flask.ext.wtf?

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库实际上只是“快捷方式“图书馆。

任何想法我可以解决这个问题?非常感谢!

回答

25

所以flask.ext实际上是一个由Armin以一种很棒的方式编写的自定义导入程序。它允许人们将扩展插件安装到单独的软件包中,但可以用一致的方式导入它们。 (真的,你应该去阅读它的代码,这太棒了。)这就是说,显然pylint并不欣赏优雅(这实际上是一个错误,在我看来),但你很幸运。这个简单的方法是做下面的事情

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或使用优雅的代码,但你不能同时拥有(现在)。

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>
0

使用flask_ <>而不是烧瓶中。分机。 <>

而不是“从flask.ext.wtf进口验证”使用“从flask_wtf进口验证

面临同样问题的邮件和消息模块。 只好使用“from flask_mail import Message,Mail”而不是“from flask.ext.mail import message,Mail”