PyQt - QtDeclarative 导入问题
我运行的是 Ubuntu 10.10,并通过 apt-get 安装了 PyQt 4.7.4。
我使用 QtDesigner 构建 GUI 布局,并使用 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
看来 QtDeclarative当我安装 PyQt 时,没有安装(或者没有安装 Python 期望的位置)。但奇怪的是,我在谷歌搜索中找不到其他人有同样的问题。
有谁知道这是怎么回事?感谢您的帮助!
戴夫
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的 ubuntu 系统上应该有一个名为
QtDeclarative
的目录。确保它位于您的PYTHONPATH
中。对于PyQt4
,应该在 Windows 计算机上执行类似的操作。There should be a directory somewhere on your ubuntu system called
QtDeclarative
. Make sure it's in yourPYTHONPATH
. Something similar should be done on the Windows machine forPyQt4
.在 Ubuntu 10.10 (Maverick) 包 python-qt4 下,包的 文件列表。但是 Ubuntu 11.04 (Natty) 中出现了 QtDeclarative.so。
因此,在这种情况下,您可以将整个操作系统更新为 Natty,或者尝试手动将此文件复制并粘贴到您的 python 路径中。
更新。刚刚尝试在我的 Debian Squeeze 中执行此操作,但由于依赖 libqt4-declarative 而失败。然而,对于 Ubuntu Maverick 来说,已经有了 maverick/libqt4-declarative。
PS。但您应该知道 - 手动复制不是首选方式。
At Ubuntu 10.10 (Maverick) under package python-qt4 there is no QtDeclarative binding in the package's filelist. But QtDeclarative.so presents in Ubuntu 11.04 (Natty).
So in that case you could update whole your OS to Natty or try to manually copy and paste this file into your python path.
UPDATE. Just tried to do it in my Debian Squeeze, but failed because of dependency libqt4-declarative. However for Ubuntu Maverick there is already maverick/libqt4-declarative.
PS. But you should know - manual copying is not preferred way.