PyQt - QtDeclarative проблемы с импортом

Я использую Ubuntu 10.10, и я установил PyQt 4.7.4 через apt-get.

Я создаю GUI-макет с помощью QtDesigner и компилирую.ui-файл в.py, используя pyuic4.

Затем я создаю подкласс автоматически сгенерированного класса и реализую конструктор подкласса. Я вызываю setupUi(), а затем получаю следующую ошибку и трассировку стека:

$ python src/gui/main_window.py 
Traceback (most recent call last):
  File "src/gui/main_window.py", line 2, in <module>
    from ui_main_window import Ui_MainWindow
  File "/home/dmass/sandbox/test/src/gui/ui_main_window.py", line 694, in <module>
    from QtDeclarative.QDeclarativeView import QDeclarativeView
ImportError: No module named QtDeclarative.QDeclarativeView

Кроме того, когда коллега компилирует файл.ui в.py, используя pyuic4 из установки PyQt 4.8.3 в Windows, я получаю следующую ошибку:

$ python src/gui/main_window.py  
Traceback (most recent call last):  
  File "src/gui/main_window.py", line 2, in <module>  
    from ui_main_window import Ui_MainWindow  
  File "/home/dmass/sandbox/test/src/gui/ui_main_window.py", line 705, in <module>  
    from PyQt4 import QtDeclarative  
ImportError: cannot import name QtDeclarative

Похоже, что QtDeclarative не был установлен (или не там, где ожидает Python), когда я установил PyQt. Но, как ни странно, я не смог найти никого другого с той же проблемой в моем поиске в Google.

Кто-нибудь знает, что здесь происходит? Спасибо за вашу помощь!

Дейв

2 ответа

Где-то в вашей системе Ubuntu должен быть каталог с именем QtDeclarative, Убедитесь, что это в вашем PYTHONPATH, Нечто подобное должно быть сделано на машине Windows для PyQt4,

В Ubuntu 10.10 (Maverick) в пакете python- qt4 нет привязки QtDeclarative в списке файлов пакета. Но QtDeclarative.so представлен в Ubuntu 11.04 (Natty).

Таким образом, в этом случае вы можете обновить всю свою ОС до Natty или попробовать вручную скопировать и вставить этот файл в ваш путь к Python.

ОБНОВИТЬ. Просто попытался сделать это в моем Debian Squeeze, но потерпел неудачу из-за зависимости libqt4-декларативной. Однако для Ubuntu Maverick уже существует декларация maverick / libqt4.

PS. Но вы должны знать - ручное копирование не является предпочтительным способом.

Другие вопросы по тегам