Подтвердить что ты не робот

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

У меня есть моя 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 на самом деле являются просто "ярлыками" для библиотек.

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

4b9b3361

Ответ 1

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

Ответ 2

Некоторое время раздражаясь этой ошибкой, я создал плагин pylint для решения этой проблемы. Код находится в https://github.com/jschaf/pylint-flask

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

  • pip install pylint-flask
  • run pylint --load-plugins=pylint_flask <your module>

Ответ 3

Используйте flask_ < > вместо flask.ext. < >

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

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