PyQt - QtDeclarative导入问题

2 投票
2 回答
2342 浏览
提问于 2025-04-16 12:29

我在使用Ubuntu 10.10系统,并通过apt-get安装了PyQt 4.7.4。

我用QtDesigner创建了一个图形界面布局,然后使用pyuic4把.ui文件转换成.py文件。

接着,我对自动生成的类进行了子类化,并实现了子类的构造函数。我调用了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

另外,当我的同事在Windows上使用PyQt 4.8.3安装的pyuic4编译.ui文件为.py文件时,我收到了以下错误:

$ 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

看起来在我安装PyQt的时候,QtDeclarative没有被安装(或者没有安装在Python期望的位置)。但奇怪的是,我在谷歌搜索时找不到其他人有同样的问题。

有没有人知道这是怎么回事?谢谢你的帮助!

Dave

2 个回答

0

在Ubuntu 10.10(代号Maverick)中,安装python-qt4这个软件包时,里面没有QtDeclarative这个绑定,具体可以在这个文件列表里查看。不过在Ubuntu 11.04(代号Natty)中,QtDeclarative.so这个文件是存在的,具体可以查看这里

所以在这种情况下,你可以选择把整个操作系统升级到Natty,或者试着手动把这个文件复制到你的python路径里。

更新:我刚在我的Debian Squeeze上尝试这样做,但因为依赖问题libqt4-declarative而失败。不过对于Ubuntu Maverick来说,已经有了maverick/libqt4-declarative这个包。

附言:不过你要知道,手动复制文件并不是推荐的做法。

0

在你的Ubuntu系统上应该有一个叫做QtDeclarative的文件夹。确保这个文件夹在你的PYTHONPATH里面。对于Windows电脑,PyQt4也需要做类似的设置。

撰写回答