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 numpy
funkcji, jak np.array
i np.zeros
i tak dalej, to napisze np_array
, np_zeros
itp 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_importer
w 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.array
etc.
Zaletą tego jest to, że będziesz mieć pojedynczy moduł, w którym wszystkie numpy
powią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_importer
nie importować nazw, których nie ma w programie, numpy
ponieważ te błędy nie zostaną przechwycone przez pylint.