3

我在 Ubuntu 10.10 上运行 Python 2.6.6。

我知道我们可以导入一个模块并将该模块绑定到不同的名称,例如

import spam as eggs

还,

from eggs import spam as foo

我的问题是,在运行PySide 示例时,以下导入代码不运行:

import PySide as PyQt4
from PyQt4 import QtCore, QtGui

它会生成导入错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyQt4

显然,根据 Python 解释器,上面的代码是不正确的,我的问题是为什么它不正确,或者说为什么这不起作用?

4

2 回答 2

4

import并且from是一种特殊的语法。

他们寻找一个模块名称,这意味着一个以sys.path模块名称开头的文件。

而且好像你没有安装 PyQt4,所以它会失败。

PyQt4运行后在命名空间中调用了一个变量这一事实import PySide as PyQt4并没有改变任何东西,Python 仍在寻找一个实际调用的PyQt4模块from PyQt4 import QtCore, QtGui

尝试做

import PySide as PyQt4
QtCore = PyQt4.QtCore
QtGui = PyQt4.QtGui

或者

import PySide as PyQt4
from PySide import QtCore, QtGui

那应该是等价的。

于 2011-02-24T01:26:36.503 回答
2

我刚刚安装了 PySide,并且正在做一个教程,其中所有示例都使用 PyQt4。我厌倦了将导入从 PyQt4 更改为 PySide,所以我只是在我的站点包中创建了一个符号链接,使用以下步骤:

1)肯定有更好的方法,但我通过打开 shell 并运行 python 找到了我的 python 包的安装位置,然后在交互式解释器中键入:

>>> import sys

>>> print sys.path

2)然后我在其中一个目录中找到了 PySide 并 cd'd 到它(nb它位于 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 如果你'在 Mac OSX Leopard 10.5.8 上重新使用 macports PySide install for python 2.7)。

3)然后我用ln建立了一个符号链接,在我的情况下我必须使用sudo:

sudo ln -s PySide PyQt4

就是这样,现在我可以使用:

from PyQt4 import QtGui

像往常一样 - 快乐的日子!

显然,如果你想安装 PyQt4,你应该首先 rm PyQt4 符号链接。另一个警告:我上面描述的内容在很多方面很可能是错误的/不好的——我不是 Python 安装方面的专家,但到目前为止对我来说还可以。YMMV,因此使用风险自负。希望有人会很快发表评论说“不,非常糟糕!” 或者理想情况下“是的,不要出汗,我们很酷……”

于 2011-06-04T12:16:07.423 回答