Очень незначительный, но стоит упомянуть.
Pylint не понимает, что torch
имеет функцию-член from_numpy
. Это потому, что torch.from_numpy
на самом деле torch._C.from_numpy
, насколько это касается Pylint.
Согласно этому потоку stackoverflow numpy
также страдает от этой проблемы.
Для справки, вы можете заставить Pylint игнорировать их, обернув «проблемные» вызовы следующими комментариями.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
обходной путь кажется довольно уродливым. нет ли способа указать pylint фильтровать определенные ошибки?
Я могу добавить, что pylint (1.6.5) также не принимает cat
, topk
и masked_select
в качестве функций-членов.
Я не думаю, что мы это исправим. (я не знаю, есть ли способ сделать это).
Вы можете подавить все такие сообщения для этих модулей, отредактировав соответствующие строки .pylintrc
следующим образом:
[MASTER]
extension-pkg-whitelist=numpy,torch
[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch
mypy, похоже, может подобрать этих участников.
Вместо игнорирования теперь вы можете:
[TYPECHECK]
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=numpy.*,torch.*
сгенерированные-члены = numpy. ,факел.
Для тех, кто использует vscode, добавьте в пользовательские настройки
"python.linting.pylintArgs": [
"--только ошибки",
"--generated-members=numpy.*, факел.*, cv2.*, cv.*"
]
только ошибки не связаны с проблемой, но полезны для подавления pep 8/форматирования «ошибок», если вы хотите
Было бы неплохо разрешить инспекцию модуля, еще и для автодополнения. Может быть, можно изменить from torch._C import *
на from torch._C import from_numpy, ...
?
Может быть, можно изменить
from torch._C import *
наfrom torch._C import from_numpy, ...
?
Это кажется достаточно простым. Мы уверены, что это правильный путь?
Я думал, что нам понадобятся подсказки по типам (которые было бы намного сложнее убедить людей использовать).
Должны ли мы открыть еще один вопрос, чтобы обсудить решение @moi90 ?
сгенерированные члены = numpy._,факел._
Для тех, кто использует vscode, добавьте в пользовательские настройки
"python.linting.pylintArgs": [
"--только ошибки",
"--generated-members=numpy.*, факел.*, cv2.*, cv.*"
]только ошибки не связаны с проблемой, но полезны для подавления pep 8/форматирования «ошибок», если вы хотите
Вы спасли часть моей жизни! хахахаха
В коде VS:
Добавление "python.linting.enabled": false
также сработало в этом случае.
Отключение линтинга целиком (как предложил @miranthajayatilake ) не является хорошим решением. Кажется, у pylint
есть проблемы с pytorch, но для меня flake8
работает хорошо.
В VS Code можно выбрать flake8
с помощью Ctrl + Shift + P
-> Select linter
-> flake8
.
Я не думаю, что мы это исправим. (я не знаю, есть ли способ сделать это).
Закрытие вопросов словами «я не знаю, как это сделать, поэтому и не собираюсь» очень непослушно.
сгенерированные члены = numpy._,факел._
Для тех, кто использует vscode, добавьте в пользовательские настройки
"python.linting.pylintArgs": [
"--только ошибки",
"--generated-members=numpy.*, факел.*, cv2.*, cv.*"
]только ошибки не связаны с проблемой, но полезны для подавления pep 8/форматирования «ошибок», если вы хотите
Если вы используете Coc, вы можете добавить то же правило в файл coc-settings.json.
Самый полезный комментарий
Для тех, кто использует vscode, добавьте в пользовательские настройки
"python.linting.pylintArgs": [
"--только ошибки",
"--generated-members=numpy.*, факел.*, cv2.*, cv.*"
]
только ошибки не связаны с проблемой, но полезны для подавления pep 8/форматирования «ошибок», если вы хотите