Я использую PyLint для проекта Python. PyLint делает много жалоб на неспособность найти numy участников. Как я могу избежать этого, не пропуская проверки членства.
Из кода:
import numpy as np
print np.zeros([1, 4])
Который, когда побежал, я получаю ожидаемое:
[[0. 0. 0. 0.]]
Тем не менее, Pylint дает мне эту ошибку:
E: 3, 6: Модуль 'numpy' не имеет элемента 'нулей' (нет элемента)
Для версий я использую pylint 1.0.0 (astroid 1.0.1, обычно 0.60.0) и пытаюсь работать с numpy 1.8.0.
У меня была такая же проблема здесь, даже с последними версиями всех связанных пакетов (
astroid 1.3.2
,logilab_common 0.63.2
,pylon 1.4.0
).Следующее решение работало как чудо: я добавил
numpy
в список игнорируемых модулей, изменив мойpylintrc
файл, в[TYPECHECK]
разделе:В зависимости от ошибки может также потребоваться добавить следующую строку (все еще в
[TYPECHECK] section
):источник
extension-pkg-whitelist=numpy
строку под[MASTER]
заголовком файла .pylintrc. Pylint, кажется, довольно хрупкое программное обеспечение и требует прикосновения эксперта, чтобы он работал для основных задач.--extension-pkg-whitelist
, что фактически выполняет импорт для указанного модуля.Я получил ту же ошибку для небольшого проекта NumPy, над которым я работал, и решил, что игнорирование NUMPY модулей будет хорошо. Я создал
.pylintrc
файл с:$ pylint --generate-rcfile > ~/.pylintrc
и следуя советам падувана и j_houg, я изменил следующие сектора:
и
и это "исправило" мою проблему.
источник
ignored-*
входам? Для меня просто добавление модуля в белый список расширений работает отлично.В последних версиях Pylint вы можете добавить
--extension-pkg-whitelist=numpy
к своей команде Pylint. Они исправили эту проблему в более ранней версии небезопасным способом. Теперь, если вы хотите, чтобы они более внимательно смотрели на пакет за пределами стандартной библиотеки, вы должны явно внести его в белый список. Посмотреть здесь.источник
Так как это лучший результат в Google, и у меня сложилось впечатление, что вы должны игнорировать эти предупреждения во всех файлах:
Эта проблема была фактически исправлена в источниках Pylint / Astroid в прошлом месяце https://bitbucket.org/logilab/astroid/commits/83d78af4866be5818f193360c78185e1008fd29e но пока не в пакеты Ubuntu.
Чтобы получить источники, просто
где последний шаг, скорее всего, потребует a,
sudo
и, конечно, вам нужен mercurial для клонирования.источник
from numpy import ceil
приводитE: 1, 0: No name 'ceil' in module 'numpy' (no-name-in-module)
я проверил фиксации упомянутой выше , и кажется , что эти изменения в версии астроиды у меня есть.Module 'numpy' has no 'zeros' member (no-member)
Для игнорирования всех ошибок, генерируемых атрибутами numpy.core, теперь мы можем использовать:
В качестве другого решения, добавьте эту опцию в файл ~ / .pylintrc или / etc / pylintrc :
Для упомянутого в коде вопроса к настоящему времени это кажется избыточным, но все же имеет значение для других модулей, т.е. netifaces и т. д.
источник
patsy.dmatrices
. Добавлениеgenerated-members=patsy.dmatrices
решило мою проблему.Если вы не хотите добавлять больше настроек, добавьте этот код в ваш файл конфигурации, а не в «белый список».
источник
pylint: error: no such option: --generate-members
За последние несколько лет об этом сообщалось много разных ошибок, например https://bitbucket.org/logilab/pylint/issue/58/false-positive-no-member-on-numpy-imports.
Я бы предложил отключить линии, где возникают жалобы.
источник
Вероятно, это путается с заумным методом импорта методов numpy. А именно,
zeros
на самом делеnumpy.core.multiarray.zeros
, импортируется в клочья с заявлениемв свою очередь импортируется с
и в цифре вы найдете
Я думаю, я бы запутался на месте PyLint!
Смотрите эту ошибку для PyLint сбоку.
источник
Я должен был добавить это вверху любого файла, где я часто использую numpy.
На всякий случай, если у кого-то в затмении возникли проблемы с Пидевом и Пилинтом ...
источник
В ответе Extension to j_hougs теперь вы можете добавить соответствующие модули к этой строке в .pylintrc, которая уже подготовлена пустой при генерации:
Вы можете создать образец .pylintrc, выполнив:
а затем отредактируйте упомянутую строку
источник
Это, наконец, решено в Пилинте 1.8.2. Работает из коробки, никаких настроек pylintrc не требуется!
источник
Это псевдо-решение, которое я придумал для этой проблемы.
Затем в коде, вместо вызова
numpy
функции , какnp.array
иnp.zeros
и так далее, можно было бы написатьnp_array
,np_zeros
и т.д. Преимущества такого подхода в сравнении с другими подходами , предложенными в других ответах:Очевидный недостаток заключается в том, что вы должны явно импортировать каждую функцию, которую вы используете. Подход может быть разработан в дальнейшем. Вы можете определить свой собственный модуль, назовите его, скажем,
numpy_importer
следующим образомТогда код вашего приложения может импортировать только этот модуль (вместо numpy) как
и используйте имена как обычно:
np.zeros
иnp.array
т. д.Преимущество этого состоит в том, что у вас будет один модуль, в котором все
numpy
связанные импортные операции выполняются раз и навсегда, а затем вы импортируете его одной строкой, куда хотите. Тем не менее, вы должны быть осторожны, чтобыnumpy_importer
не импортировать имена, которые не существуют,numpy
поскольку эти ошибки не будут обнаружены Pylint.источник
У меня была эта проблема с numpy, scipy, sklearn, nipy и т. Д., И я решил ее, обернув эпилинт так:
$ cat epylint.py
Этот скрипт просто запускает epylint, а затем очищает его выходные данные для фильтрации ложноположительных предупреждений и ошибок. Вы можете расширить его, добавив больше elif кейсов.
NB: Если это относится к вам, то вы захотите изменить свой pychechers.sh так, чтобы он был таким, как этот
(Конечно, сначала нужно сделать исполняемый файл epylint.py)
Вот ссылка на мой .emacs https://github.com/dohmatob/mydotemacs . Надеюсь, это кому-нибудь пригодится.
источник
Кажется, это работает по крайней мере на Pylint 1.1.0:
источник
Это решение сработало для меня
В основном, выберите «Выбрать значок шестеренки» в левом нижнем углу => Настройка => Настройка рабочего пространства => Расширение => Конфигурация Python => Нажмите любой файл Settings.json => добавьте его в файл «python.linting.pylintArgs»: [" --extension-pkg-whitelist = numpy "] Я использую VS 1.27.2
источник
У меня была такая же проблема с другим модулем (
kivy.properties
), который является упакованным модулем Си, какnumpy
.Используя VSCode V1.38.0, принятое решение прекратило все задержки для проекта. Таким образом, хотя он действительно удалял ложное срабатывание
no-name-in-module
, он не улучшал ситуацию.Лучшим обходным путем для меня было использование
--ignored-modules
аргумента в модуле-нарушителе. Проблема в том, что передача любого аргумента черезpython.linting.pylintArgs
стирает настройки VSCode по умолчанию , так что вам нужно их также переустановить. Это оставило меня со следующим файлом settings.json:источник
Небольшая копия вставки из предыдущего ответа, чтобы подвести итог, что работает (по крайней мере для меня: debian-jessie)
В некоторых старых версиях
pylint
возникла проблема, препятствующая работе с numpy (и другими подобными пакетами).Теперь эта проблема решена, но по соображениям безопасности внешние пакеты C (интерфейсы Python для кода C, подобные numpy-) по умолчанию отключены.
Вы можете создать белый список, чтобы разрешить
pylint
использовать их в файле~/.pylintrc
.Основная команда для запуска: # ТОЛЬКО если у вас еще нет файла .pylintrc в вашем доме $ pylint --generate-rcfile> .pylintrc
Затем откройте файл и добавьте нужные вам пакеты после
extension-pkg-whitelist=
запятой. Вы можете иметь такое же поведение, используя опцию--extension-pkg-whitelist=numpy
из командной строки.Если вы игнорируете некоторые пакеты в
[TYPECHECK]
разделе, это означает, чтоpylint
никогда не будет отображаться ошибка, связанная с этими пакетами. На практикеpylint
вам ничего не скажут об этих пакетах.источник
Я работал над патчем для pylint, чтобы решить проблему с динамическими членами в библиотеках, таких как numpy. Он добавляет опцию «dynamic-modules», которая заставляет проверять, существуют ли члены во время выполнения, путем реального импорта модуля. Смотрите выпуск № 413 в logilab / pylint . Также есть запрос на включение, смотрите ссылку в одном из комментариев.
источник
Быстрый ответ: обновите Pylint до 1.7.1 (используйте conda-forge, предоставленный Pylint 1.7.1, если вы используете conda для управления пакетами)
Я обнаружил аналогичную проблему в pylint GitHub здесь, и кто-то ответил, что все нормально после обновления до 1.7.1.
источник
Я не уверен, что это решение, но в VSCode, когда я явно написал в своих пользовательских настройках, чтобы включить pylint, все модули были распознаны.
источник
В последнее время (поскольку что-то изменилось в spyder, pylint или?), Я получаю ошибки E1101 («нет члена») из статического анализа кода spyder для символов astropy.constants. Понятия не имею почему.
Мое упрощенное решение для всех пользователей в системе Linux или Unix (вероятно, Mac похожа) заключается в создании / etc / pylintrc следующим образом:
Конечно, вместо этого его можно поместить в личный файл $ HOME / .pylintrc. И я мог бы обновить существующий файл.
источник