VS Code PyLint Ошибка E0602 (неопределенная переменная) с скомпилированной структурой Python ProtoBuf - PullRequest
0 голосов
/ 25 декабря 2018

Я долгое время пользовался Visual Studio, но это становилось слишком сложным для обслуживания.Теперь я попытался перейти на VS Code, но он выдает ряд сообщений об ошибках PyLint, которые не имеют смысла для меня (и программа все еще работает, как ожидалось).Эти ошибки происходят главным образом с кодом Python, сгенерированным из структуры GoogleProtoBuf. * ​​1001 *

Например:

from lbsnstructure.lbsnstructure_pb2 import lbsnPost

def geoaccuracy_within_threshold(post_geoaccuracy, min_geoaccuracy):
    """Checks if geoaccuracy is within or below threshhold defined"""

    if min_geoaccuracy == lbsnPost.LATLNG:
        allowed_geoaccuracies = [lbsnPost.LATLNG]
    elif min_geoaccuracy == lbsnPost.PLACE:
        allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE]
    elif min_geoaccuracy == lbsnPost.CITY:
        allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE, lbsnPost.CITY]
    else:
        return True
    # check post geoaccuracy
    if post_geoaccuracy in allowed_geoaccuracies:
        return True
    else:
        return False

Выдает сообщение об ошибке E0602 из pyLint:

Неопределенная переменная 'lbsnPost 'pylint (E0602)
lbsnPost: GeneratedProtocolMessageType

Однако Google явно заявляет , что эта форма ссылки на тип верна:

Перечисления расширяются метаклассом в набор символических констант с целочисленными значениями.Так, например, константа addressbook_pb2.Person.WORK имеет значение 2.

Я получаю похожие ошибки во всем коде (это прекрасно работает).Я подозреваю, что это то, что я написал в неправильном соглашении, но почему-то все еще работает.Но что является правильным соглашением?

Screenshot VSCode Pylint Error E0602

Эта страница, кажется, обсуждает ту же проблему, но ни одно из решений не работает:
Неопределенная переменная из импорта при использовании буферов протокола в PyDev
, то есть даже при выполнении lbsnpost().LATLNG (создание сообщения protobuf) я получаю ту же неопределенную ошибку переменной.

1 Ответ

0 голосов
/ 27 декабря 2018

Я решил свою проблему. Очевидно, , у pylint есть (были?) Проблемы с скомпилированными с протобуфом классами python.Существует пакет , доступный , который решает эту проблему.

  • установлен пакет pylint-protobuf (pip install pylint-protobuf)
  • добавлен "python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]к настройкам пользователя в VS Code

Без ошибок!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...