我正在尝试使用PyQt4运行一些示例代码。我试图从Notepad ++和Enthought Canopy环境运行它。示例代码完整地显示在下面。在npp内,我使用插件nppExec和 python -i“$(FULL_CURRENT_PATH)”作为命令。 (我也试过没有交互式-i)
import sys
from PyQt4 import QtGui
def main():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
当我从npp内部运行它时,内部控制台似乎冻结(没有错误)并且可以使用ctrl-c恢复
当我从Canopy中运行它时,我收到以下错误消息
%run "c:\users\brian\appdata\local\temp\tmpfe9mmh.py"
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
C:\Users\Brian\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.0.1160.win-x86\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
174 else:
175 filename = fname
--> 176 exec compile(scripttext, filename, 'exec') in glob, loc
177 else:
178 def execfile(fname, *where):
c:\users\brian\appdata\local\temp\tmpfe9mmh.py in <module>()
20
21 import sys
---> 22 from PyQt4 import QtGui
23
24
C:\Users\Brian\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.0.1160.win-x86\lib\site-packages\IPython\external\qt_loaders.pyc in load_module(self, mod_name)
43 Importing %s disabled by IPython, which has
44 already imported an Incompatible QT Binding: %s
---> 45 """ % (mod_name, loaded_api()))
46
47 ID = ImportDenier()
ImportError:
Importing PyQt4 disabled by IPython, which has
already imported an Incompatible QT Binding: pyside
我很困惑为什么Canopy把它的物品放在一个看似奇怪的地方(C:\ Users \ Brian \ AppData \ Local \ Enthought \ Canopy32),而不是简单的C:/ python27
我正在运行python 2.7 32位,Canopy版本:1.0.0.1160 32位,Win7 64位
答案 0 :(得分:0)
在你的机器上运行python时,看起来pyside(Qt的另一个python绑定)会以某种方式自动导入。导入pyside和pyqt导致某种冲突导致你的问题。
我想知道..你的路径中是否有一个名为sys.py的模块正在使用pyside?您正在导入sys是一个内置模块,但如果您的路径中有一个名为sys.py的文件,则会导入该文件。如果是这种情况,那么您可以运行脚本:
import sys
print sys.__file__
找到文件的位置。如果导入的sys模块实际上是内置模块,则sys将没有__file__
属性,并且将引发异常。
顺便说一下,我在我的机器上尝试了你的示例代码,它没有任何问题。
答案 1 :(得分:0)
在NppExec中,使用命令
CMD /C python -u "$(FULL_CURRENT_PATH)"
而不是
python "$(FULL_CURRENT_PATH)"