Я долгое время пользовался 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.
Я получаю похожие ошибки во всем коде (это прекрасно работает).Я подозреваю, что это то, что я написал в неправильном соглашении, но почему-то все еще работает.Но что является правильным соглашением?
Эта страница, кажется, обсуждает ту же проблему, но ни одно из решений не работает:
Неопределенная переменная из импорта при использовании буферов протокола в PyDev
, то есть даже при выполнении lbsnpost().LATLNG
(создание сообщения protobuf) я получаю ту же неопределенную ошибку переменной.