Muy menor pero digno de mención.
Pylint no detecta que torch
tiene la función de miembro from_numpy
. Es porque torch.from_numpy
es en realidad torch._C.from_numpy
en lo que respecta a Pylint.
De acuerdo con este hilo de stackoverflow numpy
también sufre este problema.
Como referencia, puede hacer que Pylint los ignore envolviendo llamadas "problemáticas" con los siguientes comentarios.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
la solución parece bastante fea. ¿No hay forma de decirle a pylint que filtre ciertos errores?
Puedo agregar que pylint (1.6.5) tampoco recoge cat
, topk
y masked_select
como funciones miembro.
No creo que arreglemos esto. (No sé si hay una manera de hacerlo tampoco).
Puede suprimir todos esos mensajes para estos módulos editando las líneas apropiadas de .pylintrc
para que sean así:
[MASTER]
extension-pkg-whitelist=numpy,torch
[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch
mypy parece ser capaz de recoger a estos miembros.
En lugar de ignorar, ahora puedes hacer:
[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.*
miembros generados = numpy. ,antorcha.
Para aquellos que usan vscode, agregue a la configuración del usuario
"python.linting.pylintArgs": [
"--solo errores",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
"errors-only" no está relacionado con el problema, pero es útil para suprimir pep 8/formatear "errores" si lo desea
Sería bueno permitir la inspección del módulo, también para el autocompletado. ¿Tal vez uno podría cambiar from torch._C import *
a from torch._C import from_numpy, ...
?
¿Tal vez uno podría cambiar
from torch._C import *
afrom torch._C import from_numpy, ...
?
Esto parece bastante simple. ¿Estamos seguros de que este es el camino a seguir?
Pensé que necesitaríamos sugerencias de tipos (que serían mucho más difíciles de convencer a las personas para que las usen).
¿Deberíamos abrir otro problema para discutir la solución de @moi90 ?
miembros generados=numpy._,torch._
Para aquellos que usan vscode, agregue a la configuración del usuario
"python.linting.pylintArgs": [
"--solo errores",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]"errors-only" no está relacionado con el problema, pero es útil para suprimir pep 8/formatear "errores" si lo desea
¡Me salvaste parte de la vida! jajajaja
En el código VS:
Agregar "python.linting.enabled": false
también funcionó en este caso.
Deshabilitar la pelusa por completo (como lo sugiere @miranthajayatilake ) no es una buena solución. Parece que pylint
tiene problemas con pytorch pero para mí flake8
funciona bien.
En VS Code, uno puede seleccionar flake8
por Ctrl + Shift + P
-> Select linter
-> flake8
.
No creo que arreglemos esto. (No sé si hay una manera de hacerlo tampoco).
Cerrar problemas con "No sé cómo, por lo tanto, no voy a hacerlo" es muy travieso.
miembros generados=numpy._,torch._
Para aquellos que usan vscode, agregue a la configuración del usuario
"python.linting.pylintArgs": [
"--solo errores",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]"errors-only" no está relacionado con el problema, pero es útil para suprimir pep 8/formatear "errores" si lo desea
Si está usando Coc, puede usar poner la misma regla en su coc-settings.json.
Comentario más útil
Para aquellos que usan vscode, agregue a la configuración del usuario
"python.linting.pylintArgs": [
"--solo errores",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
"errors-only" no está relacionado con el problema, pero es útil para suprimir pep 8/formatear "errores" si lo desea