Muito menor, mas vale a pena mencionar.
Pylint não está pegando que torch
tem a função de membro from_numpy
. É porque torch.from_numpy
é na verdade torch._C.from_numpy
no que diz respeito ao Pylint.
De acordo com este thread de stackoverflow numpy
também sofre com este problema.
Para referência, você pode fazer com que o Pylint os ignore envolvendo chamadas "problemáticas" com os comentários a seguir.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
a solução parece muito feia. não há como dizer ao pylint para filtrar certos erros?
Posso acrescentar que pylint (1.6.5) também não pega cat
, topk
e masked_select
como funções de membro.
eu não acho que vamos consertar isso. (não sei se tem como fazer isso também).
Você pode suprimir todas essas mensagens para esses módulos editando as linhas apropriadas de .pylintrc
para ficar assim:
[MASTER]
extension-pkg-whitelist=numpy,torch
[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch
mypy parece ser capaz de pegar esses membros.
Em vez de ignorar, agora você pode fazer:
[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.*
membros-gerados=numpy. ,tocha.
Para aqueles que usam vscode, adicione às configurações do usuário
"python.linting.pylintArgs": [
"--somente erros",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
errors-only não está relacionado ao problema, mas é útil para suprimir "erros" de formatação / formatação se você quiser
Seria bom permitir a inspeção do módulo, também para auto-completar. Talvez alguém possa mudar from torch._C import *
para from torch._C import from_numpy, ...
?
Talvez alguém possa mudar
from torch._C import *
parafrom torch._C import from_numpy, ...
?
Isso parece bastante simples. Temos certeza de que este é o caminho a seguir?
Achei que precisaríamos de dicas de tipo (o que seria muito mais difícil de convencer as pessoas a usar).
Devemos abrir outra questão para discutir a solução do @moi90 ?
membros-gerados=numpy._,torch._
Para aqueles que usam vscode, adicione às configurações do usuário
"python.linting.pylintArgs": [
"--somente erros",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]errors-only não está relacionado ao problema, mas é útil para suprimir "erros" de formatação / formatação se você quiser
Você salvou parte da minha vida! hahahaha
No código VS:
Adicionar "python.linting.enabled": false
também funcionou neste caso.
Desabilitar o linting todos juntos (como sugerido por @miranthajayatilake ) não é uma boa solução. Parece que pylint
tem problemas com o pytorch, mas para mim flake8
funciona bem.
No VS Code, pode-se selecionar flake8
por Ctrl + Shift + P
-> Select linter
-> flake8
.
eu não acho que vamos consertar isso. (não sei se tem como fazer isso também).
Fechar questões com "não sei como, portanto, não vou" é muito impertinente.
membros-gerados=numpy._,torch._
Para aqueles que usam vscode, adicione às configurações do usuário
"python.linting.pylintArgs": [
"--somente erros",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]errors-only não está relacionado ao problema, mas é útil para suprimir "erros" de formatação / formatação se você quiser
Se você estiver usando o Coc, poderá usar a mesma regra em seu coc-settings.json.
Comentários muito úteis
Para aqueles que usam vscode, adicione às configurações do usuário
"python.linting.pylintArgs": [
"--somente erros",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
errors-only não está relacionado ao problema, mas é útil para suprimir "erros" de formatação / formatação se você quiser