У меня есть проект Python, использующий PyDev в Eclipse, и PyDev продолжает генерировать ложные ошибки для моего кода. У меня есть модуль settings
, определяющий settings
объект. Я импортирую это в модуль b
и назначаю атрибут:
from settings import settings
settings.main = object()
В некоторых частях моего кода, но не во всем, такие утверждения, как:
from settings import settings
print settings.main
... генерировать сообщения "Undefined variable from import: main" в панели ошибок кода Eclipse, даже если код работает без проблем. Как я могу это исправить?
python
code-analysis
pydev
Крис Б.
источник
источник
Ответы:
Для кода в вашем проекте единственный способ - добавить объявление о том, что вы этого ожидали - возможно, защищенное,
if False
чтобы он не выполнялся (статический анализ кода видит только то, что вы видите, а не информацию о времени выполнения - если вы сам открыл этот модуль, у вас не будет никаких указаний на то, что ожидалось main).Чтобы преодолеть это, есть несколько вариантов:
Если это какой-то внешний модуль, его можно добавить в,
forced builtins
чтобы PyDev порождал оболочку для получения информации о времени выполнения ( подробности см. Http://pydev.org/manual_101_interpreter.html ), то есть: в основном PyDev будет импортируйте модуль в оболочку и выполните операцииdir(module)
иdir
над классами, найденными в модуле, чтобы представить доработки и провести анализ кода.Вы можете использовать Ctrl + 1 (Cmd + 1 для Mac) в строке с ошибкой, и PyDev предложит вам добавить комментарий, чтобы игнорировать эту ошибку.
Можно создать
stub
модуль и добавить его вpredefined
доработки ( http://pydev.org/manual_101_interpreter.html также содержит подробности об этом).источник
try: import a; except: a=mockModule
: есть ли способ подавить их без комментариев?Я использую opencv, который полагается на двоичные файлы и т. Д., Поэтому у меня есть сценарии, в которых каждая вторая строка имеет эту глупую ошибку. Python - динамический язык, поэтому такие случаи не следует рассматривать как ошибки.
Я полностью удалил эти ошибки, перейдя по ссылке:
Окно -> Настройки -> PyDev -> Редактор -> Анализ кода -> Не определено -> Неопределенная переменная из импорта -> Игнорировать
Вот и все.
Также может быть: Window -> Preferences -> PyDev -> Editor -> Code Analysis -> Imports -> Import not found -> Ignore
источник
Сообщение, помеченное как ответ, дает обходной путь, а не решение.
Это решение работает для меня:
Window - Preferences - PyDev - Interpreters - Python Interpreter
Forced builtins
вкладкуNew...
multiprocessing
в моем случае) и нажмитеOK
Не только исчезнут сообщения об ошибках, но и будут распознаны члены модуля.
источник
re
но однажды я больше не делал красных чернил для таких вещей, какre.M
У меня была аналогичная проблема с проектом Eclipse / PyDev. В этом проекте корневой каталог кода Python был подкаталогом проекта.
Когда проект был отлажен или запущен, все было в порядке, так как рабочий каталог был установлен в правильное место. Однако анализ кода PyDev не смог найти импорт из module1 или module2.
Решением было отредактировать свойства проекта -> PyDev - раздел PYTHONPATH и удалить / MyProject из вкладки исходных папок и вместо этого добавить / MyProject / src.
источник
Это сработало для меня:
Шаг 1) Удаление интерпретатора, повторная автонастройка
Шаг 2) Окно - Настройки - PyDev - Интерпретаторы - Интерпретатор Python Перейдите на вкладку «Принудительные встроенные команды». Нажмите «Создать» ... Введите имя модуля (в моем случае - проклятия) и нажмите «ОК».
Шаг 3) Щелкните правой кнопкой мыши в обозревателе проекта, какой модуль выдает ошибки. Перейдите в PyDev-> Анализ кода.
источник
У меня такая же проблема. Я использую Python и Eclipse в Windows. Код работал нормально, но eclipse показывал ошибки везде. После того как я изменил имя папки Lib на lib (C: \ Python27 \ lib), проблема была решена. Кажется, что если заглавные буквы не совпадают с заглавными буквами в файле конфигурации, это иногда вызывает проблемы (но, похоже, не всегда, потому что проверка ошибок выполнялась в течение долгого времени, прежде чем проблемы внезапно возникли из-за неочевидной очевидности. причина).
источник
Примерно то, что я делал:
import module.submodule class MyClass: constant = submodule.constant
На что Пилинт сказал:
E: 4,15: Undefined variable 'submodule' (undefined-variable)
Я решил это, изменив свой импорт, например:
from module.submodule import CONSTANT class MyClass: constant = CONSTANT
Примечание: я также переименовал импортированную переменную, чтобы она имела имя в верхнем регистре, чтобы отразить ее постоянный характер.
источник
Возможно, вам просто нужно перенастроить путь к python в Eclipse. Смотрите мой ответ на аналогичный вопрос.
источник
в настройках -> PyDev -> PyLint под аргументами для перехода в PyLint добавьте эту строку:
вам нужно будет сделать это для каждого сгенерированного файла. Я нашел это в Google, но потерял ссылку.
источник
Щелкните правой кнопкой мыши в обозревателе проекта, какой модуль выдает ошибки. Перейдите в PyDev-> Удалить маркеры ошибок.
источник
Мой ответ не привносит ничего нового, просто конкретный пример, с которым я столкнулся.
import gtk.gdk w = gtk.gdk.get_default_root_window()
PyDev показал сообщение об ошибке «Неопределенная переменная из импорта: get_default_root_window ()»
В оболочке python вы можете видеть, что это «встроенный» модуль, как упоминалось в ответе выше:
>>> import gtk.gdk >>> gtk.gdk <module 'gtk.gdk' (built-in)>
Теперь в Window-> Preferences-> PyDev-> Interpreters-> Python Interpreter я выбрал вкладку «Принудительные встроенные функции» и добавил в список «gtk.gdk».
Теперь сообщение об ошибке больше не отображалось.
источник
Я считаю, что эти 2 шага работают у меня все время:
Здесь следует отметить:
Некоторые популярные модули устанавливаются с одной родительской и дочерней парой. В этих случаях вам также необходимо добавить этого родителя в PYTHONPATH в дополнение к его родительской папке, которую вы уже подтвердили / добавили для всего остального.
Используйте (например) «google.appengine.api.memcache» при добавлении к принудительным встроенным командам, а НЕ только «memcache», где «google» в этом примере является непосредственным дочерним элементом папки, определенной в PYTHONPATH.
источник
Если вы уверены, что ваш скрипт работает и это ложная тревога, перейдите в «Настройки»> «PyDev»> «Редактор»> «Анализ кода». Понизьте ошибки до предупреждений.
http://www.pydev.org/manual_adv_code_analysis.html
источник