我在Ubuntu 10.10上运行Python 2.6.6。
据我所知,我们可以导入模块并将该模块绑定到其他名称,例如
import spam as eggs
也
from eggs import spam as foo
我的问题是,在运行PySide examples时,以下导入代码无法运行:
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解释器上面的代码是不正确的,我的问题是为什么它不正确或者为什么这不起作用?
答案 0 :(得分:4)
import
和from
是一种特殊语法。
他们寻找模块名称,这意味着sys.path
中的文件以模块名称开头。
似乎你没有安装PyQt4,所以它会失败。
在运行PyQt4
之后,在命名空间中有一个名为import PySide as PyQt4
的变量这一事实并没有改变任何东西,当你执行{{{{}时,Python仍在寻找一个名为PyQt4
的实际模块1}}。
尝试
from PyQt4 import QtCore, QtGui
或
import PySide as PyQt4
QtCore = PyQt4.QtCore
QtGui = PyQt4.QtGui
这应该是等价的。
答案 1 :(得分:2)
我刚刚安装了PySide并且正在做一个所有示例都使用PyQt4的教程。我厌倦了将导入从PyQt4更改为PySide所以我只是在我的站点包中创建了一个符号链接,使用以下步骤:
1)肯定有更好的方法但是我通过打开shell并运行python找到了我的python包的安装位置,然后输入了交互式解释器:
>>> import sys
>>> print sys.path
2)然后我在其中一个目录中发现了PySide并cd了它(nb它位于/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages如果您在Mac OSX Leopard 10.5.8上使用macports PySide安装for python 2.7。
3)然后我用ln做了一个符号链接,在我的情况下我不得不使用sudo:
sudo ln -s PySide PyQt4
就是这样,现在我可以使用:
from PyQt4 import QtGui
正常 - 快乐的日子!
显然,如果您想安装PyQt4,首先应该使用PyQt4符号链接。 另一个警告:我上面所描述的可能在很多方面都是错误的/坏的 - 我不是Python安装的专家,但到目前为止它对我来说还可以。 YMMV因此使用风险自负。希望有人会很快评论说“不,非常糟糕!”或者理想的是“是的,不要流汗,我们冷静......”