Esta es la pseudo solución que se me ocurrió para este problema.
#pylint: disable=no-name-in-module
from numpy import array as np_array, transpose as np_transpose, \
linspace as np_linspace, zeros as np_zeros
from numpy.random import uniform as random_uniform
#pylint: enable=no-name-in-module
Luego, en su código, en lugar de llamar a numpy
funciones comonp.array
y np.zeros
y así sucesivamente, que iba a escribir np_array
, np_zeros
etc. Las ventajas de este método frente a otros enfoques sugeridos en otras respuestas:
- El deshabilitar / habilitar pylint está restringido a una pequeña región de su código
- Eso significa que no tiene que rodear cada línea que tiene una invocación de una función numpy con una directiva pylint.
- No está deshabilitando pylint del error para todo su archivo, lo que podría enmascarar otros problemas con su código.
La clara desventaja es que debe importar explícitamente cada función numpy que use. El enfoque podría desarrollarse más. Puedes definir tu propio módulo, llámalo decir, de la numpy_importer
siguiente manera
""" module: numpy_importer.py
explicitely import numpy functions while avoiding pylint errors
"""
#pylint: disable=unused-import
#pylint: disable=no-name-in-module
from numpy import array, transpose, zeros #add all things you need
from numpy.random import uniform as random_uniform
#pylint: enable=no-name-in-module
Luego, su código de aplicación podría importar este módulo solamente (en lugar de numpy) como
import numpy_importer as np
y usa los nombres como siempre: np.zeros
, np.array
etc.
La ventaja de esto es que tendrá un único módulo en el que todas numpy
las importaciones relacionadas se realizan de una vez por todas, y luego lo importa con esa única línea, donde lo desee. Sin embargo, debe tener cuidado de numpy_importer
no importar nombres que no existen, numpy
ya que esos errores no serán detectados por pylint.