El depurador Pycharm funciona en Ubuntu pero no en Windows para código idéntico

Actualización: problema que se está siguiendo aquí

Edit: puede que no sea el único con este problema. Perdí esto, que también se publicó hoy y parece relacionado: el depurador de PyCharm no funciona

A continuación se muestra un ejemplo mínimo que funciona bien tanto en Windows 7 como en Ubuntu 14.04 cuando se usa Pycharm Professional

PyCharm 2016.1 Build #PY-145.260, built on March 22, 2016 JRE: 1.8.0_60-b27 x86 JVM: Java HotSpot(TM) Server VM by Oracle Corporation 

Ahora la parte súper rara: en el depurador Pycharm de Ubuntu no tengo ningún problema. Sin embargo, en el depurador Pycharm de Window obtengo el siguiente rastreo (¡aunque el código funciona bien cuando no estoy depurando!):

 Traceback (most recent call last): File "D:\Program Files (x86)\JetBrains\PyCharm 2016.1\helpers\pydev\pydevd.py", line 1530, in  globals = debugger.run(setup['file'], None, None, is_module) File "D:\Program Files (x86)\JetBrains\PyCharm 2016.1\helpers\pydev\pydevd.py", line 937, in run pydev_imports.execfile(file, globals, locals) # execute the script File "C:/Users/Cornelis/PycharmProjects/SO-Help/test.py", line 11, in  class MainWindow(QtGui.QMainWindow): File "C:/Users/Cornelis/PycharmProjects/SO-Help/test.py", line 58, in MainWindow @QtCore.pyqtSlot(int, int) AttributeError: 'module' object has no attribute 'pyqtSlot' Backend TkAgg is interactive backend. Turning interactive mode on. 

¡Ni siquiera sé cómo se supone que debo comenzar a depurar ya que nunca antes había visto que sucediera algo así! ¿Qué significa en el mundo si tu progtwig funciona cuando lo ejecutas pero no cuando intentas depurarlo y, además, que se depura bien en otro sistema operativo? ¿Puede esto solo ser un error de Pycharm? El rastreo anterior no es exactamente idéntico a lo que recibí en mi progtwig principal, pero es lo más cercano que pude encontrar. A continuación se muestra la traza que veo en mi progtwig completo:

 Backend TkAgg is interactive backend. Turning interactive mode on. Traceback (most recent call last): File "D:\Program Files (x86)\JetBrains\PyCharm 2016.1\helpers\pydev\pydevd.py", line 1530, in  globals = debugger.run(setup['file'], None, None, is_module) File "D:\Program Files (x86)\JetBrains\PyCharm 2016.1\helpers\pydev\pydevd.py", line 937, in run pydev_imports.execfile(file, globals, locals) # execute the script File "D:/Home/Documents/PycharmProjects/BMDanalyse/BMDanalyse/SPCanalyse.py", line 22, in  from ViewBoxCustom import MultiRoiViewBox, ImageAnalysisViewBox File "D:/Home/Documents/PycharmProjects/BMDanalyse/BMDanalyse\ViewBoxCustom.py", line 68, in  class MultiRoiViewBox(pg.ViewBox): File "D:/Home/Documents/PycharmProjects/BMDanalyse/BMDanalyse\ViewBoxCustom.py", line 71, in MultiRoiViewBox clicked = QtCore.pyqtSignal(int, int) AttributeError: 'module' object has no attribute 'pyqtSignal' 

Aquí está tu ejemplo mínimo. Simplemente copie y pegue y haga clic en el ViewBox. Debería aparecer una imagen aleatoria si la ejecuta. Pero si lo depuras, explota.

 import os, sys, matplotlib, matplotlib.pyplot import numpy as np from pyqtgraph.Qt import QtCore, QtGui from pyqtgraph.widgets.GraphicsLayoutWidget import GraphicsLayoutWidget import pyqtgraph as pg import pyqtgraph.functions as fn N = 256 ARR = np.random.random((N,N))*255 class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent) self.setupUserInterface() self.setupSignals() def setupUserInterface(self): """ Initialise the User Interface """ # Left frame leftFrame = QtGui.QFrame() leftFrameLayout = QtGui.QHBoxLayout() leftFrame.setLayout(leftFrameLayout) leftFrame.setLineWidth(0) leftFrame.setFrameStyle(QtGui.QFrame.Panel) leftFrameLayout.setContentsMargins(0,0,5,0) # Left frame contents self.viewMain = GraphicsLayoutWidget() # A GraphicsLayout within a GraphicsView leftFrameLayout.addWidget(self.viewMain) self.viewMain.setMinimumSize(200,200) self.vb = MultiRoiViewBox(lockAspect=True,enableMenu=True) self.viewMain.addItem(self.vb) self.vb.enableAutoRange() # Right frame self.sidePanel = SidePanel(self) # UI window (containing left and right frames) UIwindow = QtGui.QWidget(self) UIwindowLayout = QtGui.QHBoxLayout() UIwindowSplitter = QtGui.QSplitter(QtCore.Qt.Horizontal) UIwindowLayout.addWidget(UIwindowSplitter) UIwindow.setLayout(UIwindowLayout) self.setCentralWidget(UIwindow) UIwindowSplitter.addWidget(leftFrame) UIwindowSplitter.addWidget(self.sidePanel) self.setMinimumSize(600,500) self.resize(self.minimumSize()) def setupSignals(self): """ Setup signals """ # self.sidePanel.buttImageAdd.clicked.connect(self.showImage) self.vb.clicked.connect(self.on_vbc_clicked) @QtCore.pyqtSlot(int, int) def on_vbc_clicked(self, x, y): print(x) print(y) self.showImage() def showImage(self): """ Shows image in main view """ self.vb.showImage(ARR) class ViewMode(): def __init__(self,id,cmap): self.id = id self.cmap = cmap self.getLookupTable() def getLookupTable(self): lut = [ [ int(255*val) for val in self.cmap(i)[:3] ] for i in xrange(256) ] lut = np.array(lut,dtype=np.ubyte) self.lut = lut class MultiRoiViewBox(pg.ViewBox): sigROIchanged = QtCore.Signal(object) clicked = QtCore.pyqtSignal(int, int) def __init__(self,parent=None,border=None,lockAspect=False,enableMouse=True,invertY=False,enableMenu=True,name=None): pg.ViewBox.__init__(self,parent,border,lockAspect,enableMouse,invertY,enableMenu,name) self.img = None self.NORMAL = ViewMode(0,matplotlib.cm.gray) self.DEXA = ViewMode(1,matplotlib.cm.jet) self.viewMode = self.NORMAL def showImage(self,arr): if arr==None: self.img = None return if self.img==None: self.img = pg.ImageItem(arr,autoRange=False,autoLevels=False) self.addItem(self.img) self.img.setImage(arr,autoLevels=False) self.updateView() def updateView(self): self.background.setBrush(fn.mkBrush(self.viewMode.lut[0])) self.background.show() if self.img==None: return else: self.img.setLookupTable(self.viewMode.lut) def mouseClickEvent(self, ev): if ev.button() == QtCore.Qt.RightButton and self.menuEnabled(): ev.accept() self.raiseContextMenu(ev) elif ev.button() == QtCore.Qt.LeftButton: ev.accept() pos = self.mapToItem(self.img, ev.pos()) self.clicked.emit(pos.x(), pos.y()) from pyqtgraph.Qt import QtCore,QtGui class SidePanel(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.setMinimumWidth(250) self.buttMinimumSize = QtCore.QSize(36,36) self.setupImageToolbox() sidePanelLayout = QtGui.QVBoxLayout() sidePanelLayout.addWidget(self.imageToolbox) sidePanelLayout.setContentsMargins(0,0,0,0) self.setLayout(sidePanelLayout) def setupImageToolbox(self): # Image buttons self.buttImageAdd = QtGui.QPushButton() imageButtons = [self.buttImageAdd] for i in xrange(len(imageButtons)): image = imageButtons[i] image.setMinimumSize(self.buttMinimumSize) self.imageFileTools = QtGui.QFrame() imageFileToolsLayout = QtGui.QHBoxLayout() self.imageFileTools.setLayout(imageFileToolsLayout) self.imageFileTools.setLineWidth(1) self.imageFileTools.setFrameStyle(QtGui.QFrame.StyledPanel) imageFileToolsLayout.addWidget(self.buttImageAdd) # Image Toolbox (containing imageFileList + imageFileList buttons) self.imageToolbox = QtGui.QFrame() self.imageToolbox.setLineWidth(2) self.imageToolbox.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised) imageToolboxLayout = QtGui.QVBoxLayout() self.imageToolbox.setLayout(imageToolboxLayout) imageToolboxLayout.addWidget(self.imageFileTools) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) 

El problema se resolvió después de volver a instalar Pycharm y configurar los paquetes de Python nuevamente desde cero, excepto que esta vez se usaba Python de 64 bits (antes se usaba de 32 bits). Además, estaba usando el gestor de paquetes python de Continuum Analytics. Ya no lo uso, por lo que también podría haber sido el culpable.

Supongo que es debido a su carpeta / archivo .idea .

Haga clic en la opción Run en la barra de menú de pycharm.

Haga clic en Edit Configurations..

Verifique que las opciones para su intérprete sean correctas para su entorno. Probablemente tendrá que cambiar esto cada vez que cambie de sistema operativo, ya que pycharm guarda su configuración en una base de proyecto, en esa carpeta / archivo .idea .

Si esto no funciona, .idea una copia de seguridad de su carpeta / archivo .idea y luego .idea . Luego abra el proyecto en pycharm y vea si eso resuelve el problema.

Si ninguna de estas cosas funciona, entonces estás tratando con algo en el final de Jetbrains que probablemente no tenga solución. Ya que está usando pyqt, supongo que algo no encaja bien con el depurador.