Pylint - Pylint не удалось импортировать файл flask.ext.wtf?

17

У меня есть моя Pylint install import flask просто отлично. И с той же установкой фляги, у меня есть wtforms, который работает отлично в моем приложении. Однако, когда я запускаю Pylint в файле, импортирую wtforms:

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'

Во время поиска я обнаружил это обсуждение , предполагая, что это может быть потому, что библиотеки flask.ext на самом деле просто «ярлыки» "в библиотеки.

Любая идея, как я могу это исправить? Большое вам спасибо!

    
задан golmschenk 17.04.2013 в 15:34
источник

3 ответа

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 или используя элегантный код, но вы не можете иметь оба (прямо сейчас).

    
ответ дан Ian Stapleton Cordasco 17.04.2013 в 16:41
7

Некоторое время раздражаясь этой ошибкой, я создал плагин pylint для решения этой проблемы. Код находится в Ссылка

Чтобы включить pylint для просмотра модулей flask.ext, выполните следующие действия:

  1. pip install pylint-flask
  2. выполнить pylint --load-plugins=pylint_flask <your module>
ответ дан Joe 29.06.2015 в 00:17
0

Использовать флажок_ & lt; & gt; вместо flask.ext. & lt; gt;

Вместо «from flask.ext.wtf import validators» используйте « из флажков флажков flask_wtf »

Столкнулась с той же проблемой для модуля Mail и Message. Пришлось использовать « from flask_mail import Message, Mail » вместо «from flask.ext.mail import Message, Mail»

    
ответ дан FILVIN 07.12.2016 в 12:54