To jest pseudo-rozwiązanie, które wymyśliłem dla tego problemu.
#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
Następnie w kodzie, zamiast wywoływania numpyfunkcji, jak np.arrayi np.zerosi tak dalej, to napisze np_array, np_zerositp Zalety takiego podejścia wobec innych rozwiązań proponowanych w innych odpowiedzi:
- Włączanie / wyłączanie pylinta jest ograniczone do małego regionu twojego kodu
- Oznacza to, że nie musisz otaczać każdej pojedynczej linii, która ma wywołanie funkcji numpy, dyrektywą pylint.
- Nie robisz pylint wyłączania błędu dla całego pliku, co może maskować inne problemy z kodem.
Oczywistą wadą jest to, że musisz jawnie zaimportować każdą używaną funkcję numpy. Podejście to można by rozwinąć dalej. Możesz zdefiniować swój własny moduł, nazwij go, powiedzmy, numpy_importerw następujący sposób
""" 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
Wtedy twój kod aplikacji może importować tylko ten moduł (zamiast numpy) jako
import numpy_importer as np
i używać nazw jak zwykle: np.zeros, np.arrayetc.
Zaletą tego jest to, że będziesz mieć pojedynczy moduł, w którym wszystkie numpypowiązane importy są wykonywane raz na zawsze, a następnie importujesz je za pomocą tej pojedynczej linii, gdziekolwiek chcesz. Mimo to musisz uważać, aby numpy_importernie importować nazw, których nie ma w programie, numpyponieważ te błędy nie zostaną przechwycone przez pylint.