2013-05-05 92 views
2

我想用PyQt4運行一些示例代碼。我試圖從Notepad ++以及Enthought Canopy環境中運行它。示例代碼如下所示。從npp內部,我使用插件nppExec作爲命令python -i「$(FULL_CURRENT_PATH)」。 (我也嘗試過沒有互動-i)運行PyQt4示例代碼時沒有任何反應

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() 

當我從核電站內運行,內部控制檯似乎凍結了(沒有錯誤),並可回收使用Ctrl-C

當我運行它從內篷,我得到了以下錯誤消息

%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 

我很困惑,爲什麼雨棚將它的項目在一個看似陌生的地方(C:\用戶\布萊恩\應用程序數據\本地\ Enthought \ Canopy32) ,而不是簡單的C:/ python27

我正在Python 2.7版32位,雨棚版本:1.0.0.1160 32位的Win7 64位

+0

你上面的代碼沒有問題的作品。 – Developer 2013-05-05 10:41:21

回答

0

它看起來像pyside(替代蟒蛇Qt的結合),以某種方式時蟒蛇正在運行被自動導入你的機。導入pyside和pyqt都會導致某種衝突導致您的問題。

我想知道..你有一個名爲sys.py的模塊在你使用pyside的路徑中嗎?您正在導入作爲內置模塊的sys,但是如果在路徑中有一個名爲sys.py的文件,則會導入該文件。如果是這種情況,那麼您可以運行該腳本:

import sys 

print sys.__file__ 

找到文件的位置。如果導入的sys模塊實際上是內置模塊,sys將不會有__file__屬性,並且會引發異常。

順便說一句,我試着在我的機器上的例子代碼,它運行沒有任何問題。

0

在NppExec,用命令的

CMD /C python -u "$(FULL_CURRENT_PATH)" 

代替

python "$(FULL_CURRENT_PATH)"