2013-04-17 31 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」