Как исправить ошибки PyDev «Неопределенная переменная из импорта»?

У меня есть проект 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, даже если код работает без проблем. Как я могу исправить это?

134
задан Chris B. 21 January 2010 в 23:11
поделиться

1 ответ

Если нарушение доступа к памяти происходит только в том случае, если Studio не удается отобразить адрес метода, это может быть вызвано отсутствием отладочной информации. Вероятно, выполняется отладка кода, скомпилированного с флагами компилятора/компоновщика выпуска (не отладочного).

Попробуйте включить отладочные сведения в свойствах проекта C++, перестроить и перезапустить отладчик. Если это поможет, вы увидите все обычные отслеживаемые вещи, такие как стек, переменные и т.д.

-121--4817572-

В базовом классе, от которого наследуются все страницы, просто переопределите свойство Master , примерно так:

public new SiteMaster Master
{
  get { return base.Master as SiteMaster ; }
}

или собственный вариант абатищева:

public new ISiteMaster Master
{
  get { return base.Master as ISiteMaster; }
}
-121--4407381-

Для кода в вашем проекте единственным способом является добавление объявления, говорящего, что вы ожидаете, что - возможно, защищено , если False , чтобы он не выполнялся (статический код-анализ видит только то, что вы видите, а не информация о времени выполнения - если вы

Для преодоления этого существует несколько вариантов:

  1. Если это какой-то внешний модуль, его можно добавить в принудительные сборки , чтобы PyDev породил оболочку для получения информации о времени выполнения (см. http:// pydev.org/manual_101_interpreter.html для подробностей) - т.е. в основном PyDev импортирует модуль в оболочку и выполняет dir (модуль) и dir для классов, найденных в модуле, для представления завершений и выполнения анализа кода.

  2. Вы можете использовать Ctrl + 1 (Cmd + 1 для Mac) в строке с ошибкой, и PyDev предоставит вам возможность добавить комментарий, чтобы игнорировать эту ошибку.

  3. Можно создать модуль заглушки и добавить его к предопределенным завершениям ( http://pydev.org/manual_101_interpreter.html также содержит подробную информацию об этом).

152
ответ дан 23 November 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: