Имена PyQt4 отображаются как неопределенные в eclipse, но он работает нормально

#python #eclipse #pyqt4 #pydev #python-2.7

#python #eclipse #pyqt4 #pydev #python-2.7

Вопрос:

Я использую Eclipse 3.7.1 с последней надстройкой PyDev для кодирования на Python. Я использую PyQt4. В верхней части моего файла у меня есть:

 from PyQt4.QtCore import *
from PyQt4.QtGui import *
  

Кроме того, у меня есть дерево PyQt4, включенное в список Project Explorer. Однако eclipse по-прежнему считает, что имена, подобные QMainWindow, не определены. Код выполняется нормально. Как я могу заставить eclipse распознавать эти имена.

Спасибо

Ответ №1:

PyQt на самом деле является оболочкой библиотек C Qt. Таким образом, они не .py файлы, и PyDev не может проанализировать их, чтобы получить, что в них. Вам нужно добавить PyQt4 на вкладку Принудительные сборки, чтобы PyDev мог использовать оболочку Python для «просмотра» этих библиотек и знать, что в них находится. Это также приведет к завершению кода для PyQt.

Кроме того, обычно это не очень хорошая практика для использования from foo import * . Вы будете импортировать все внутри своего пространства имен, и вы не будете знать, что откуда поступает. Более того, у вас могут быть конфликты имен, которые маскируют друг друга. Хотя это маловероятно с PyQt, все же я бы посоветовал вам привыкнуть к from PyQt4 import QtGui, QtCore и ссылаться на такие классы, как QtGui.QMainWindow .

Комментарии:

1. Спасибо, Аварис. Ваше решение сработало хорошо и имеет смысл. Я также ценю напоминание о хорошем стиле программирования на Python. Часто бывает так, что те, кто выступает за хороший стиль, столкнулись с недостатками несоблюдения его, то есть они знают, в чем боль.

Ответ №2:

иногда случается, что PyDev теряет разум… Если перезапуск Eclipse не помогает, подумайте о том, чтобы сделать это: PyDevPreferencs

Нажмите на кнопку «Применить» и выберите свой интерпретатор python. Это должно заставить Eclipse восстановить существующие библиотеки.

Комментарии:

1. Спасибо за идеи, однако он был постоянным во многих перезапусках. У коллеги такая же проблема. Я заново настроил интерпретатор и даже добавил site-packages PyQt4 в отдельную папку на нижней панели, которую вы изобразили.