Pycharm调试器可以在Ubuntu上运行,但不能在Windows上使用相同的代码

弗里克斯特

更新:这里正在跟踪问题

编辑:我可能不是唯一一个与此问题有关的人。我错过了今天发布的这篇文章,它看起来很相关:PyCharm调试器不起作用

以下是使用Pycharm Professional时在Windows 7和Ubuntu 14.04上均可正常运行的最小示例

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

现在,最奇怪的部分是:在Ubuntu的Pycharm调试器上,我没有遇到任何问题。但是,在Window的Pycharm调试器中,我得到以下回溯(即使未调试时代码运行正常!):

Traceback (most recent call last):
  File "D:\Program Files (x86)\JetBrains\PyCharm 2016.1\helpers\pydev\pydevd.py", line 1530, in <module>
    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 <module>
    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.

我什至不知道应该如何开始调试,因为我从未见过这样的事情!这是什么意思,如果您的程序在运行时可以运行,而在尝试调试时却不能运行,而且可以在其他OS上正常调试,那意味着什么呢?这只能是Pycharm错误吗?上面的回溯与我在主程序中得到的不完全相同,但是与我可以得到的最接近。以下是我在完整程序中看到的回溯:

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 <module>
    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 <module>
    from ViewBoxCustom import MultiRoiViewBox, ImageAnalysisViewBox
  File "D:/Home/Documents/PycharmProjects/BMDanalyse/BMDanalyse\ViewBoxCustom.py", line 68, in <module>
    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'

这是您的最小示例。只需复制并粘贴并单击ViewBox。如果您运行随机图像,则应显示该图像。但是,如果您调试它,它会炸毁。

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_())
弗里克斯特

重新安装Pycharm并从头开始重新设置python软件包后,此问题已解决,但这次使用的是python 64位(之前使用32位)。此外,我正在使用Continuum Analytics的python软件包管理器。我不再使用它,因此可能也是罪魁祸首。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery代码可以在localhost上正常运行,但不能在服务器上运行

来自分类Dev

Java提示可以在Windows上运行,但不能在Ubuntu上运行

来自分类Dev

为什么我的jQuery代码可以在jsfiddle上运行,但不能在Dreamweaver或浏览器上运行?

来自分类Dev

可运行的.jar可在Ubuntu上运行,但不能在Windows上运行

来自分类Dev

Kivy应用程序可在Windows 7上运行,但不能在ubuntu上运行

来自分类Dev

脚本可以在实时服务器上正常运行,但不能在wamp上

来自分类Dev

PHP代码在本地运行,但不能在Azure上运行

来自分类Dev

控制器可以在本地正常运行,但不能在heroku上运行

来自分类Dev

我有一个简单的代码可以在localhost上正常运行,但不能在真实服务器上运行

来自分类Dev

为什么这段代码可以在 Linux 上运行,而不能在 Windows 上运行?

来自分类Dev

为什么这个 C 代码在没有 cygwin 的情况下可以在 linux 上运行,但不能在 Windows 上运行

来自分类Dev

PHP登录可以在XAMPP上使用,但不能在Web服务器上使用?

来自分类Dev

JavaScript代码可在旧服务器上运行,但不能在新服务器上运行

来自分类Dev

为什么我的python的socket.shutdown可以在Windows上运行而不能在Ubuntu上运行?

来自分类Dev

httpClient.get在模拟器上可以,但不能在android设备上使用

来自分类Dev

电子邮件发送代码可在localhost上运行,但不能在服务器上运行

来自分类Dev

电子邮件发送代码可在localhost上运行,但不能在服务器上运行

来自分类Dev

地理位置代码可在桌面浏览器上运行,但不能在移动设备上运行

来自分类Dev

程序可以在旧设备和新设备的模拟器上运行,但不能在新设备上运行

来自分类Dev

php-在浏览器中显示png / image可以在localhost上运行,但不能在aws上运行

来自分类Dev

在onclick之后使用.val可以在模拟器中使用,但不能在设备上使用

来自分类Dev

键盘扩展可以在模拟器中使用,但不能在设备上使用

来自分类Dev

在本地运行一些单元测试设置代码,但不能在构建服务器上运行

来自分类Dev

JavaScript警报可以在Firefox上正常运行,但不能在Chrome和资源管理器中运行

来自分类Dev

asp.net中的计时器可以在localhost上正常运行,但不能在线运行

来自分类Dev

为什么jQuery脚本可以在本地主机上运行但不能在Web服务器上运行?

来自分类Dev

TLSv1.2的curl可以在客户端上运行,但不能在服务器上运行

来自分类Dev

Microsoft Graph ASPNET Webhooks代码示例可在ngrok上运行,但不能在azure上运行

来自分类Dev

代码签名的IPA在iOS7上运行,但不能在iOS8上运行

Related 相关文章

  1. 1

    jQuery代码可以在localhost上正常运行,但不能在服务器上运行

  2. 2

    Java提示可以在Windows上运行,但不能在Ubuntu上运行

  3. 3

    为什么我的jQuery代码可以在jsfiddle上运行,但不能在Dreamweaver或浏览器上运行?

  4. 4

    可运行的.jar可在Ubuntu上运行,但不能在Windows上运行

  5. 5

    Kivy应用程序可在Windows 7上运行,但不能在ubuntu上运行

  6. 6

    脚本可以在实时服务器上正常运行,但不能在wamp上

  7. 7

    PHP代码在本地运行,但不能在Azure上运行

  8. 8

    控制器可以在本地正常运行,但不能在heroku上运行

  9. 9

    我有一个简单的代码可以在localhost上正常运行,但不能在真实服务器上运行

  10. 10

    为什么这段代码可以在 Linux 上运行,而不能在 Windows 上运行?

  11. 11

    为什么这个 C 代码在没有 cygwin 的情况下可以在 linux 上运行,但不能在 Windows 上运行

  12. 12

    PHP登录可以在XAMPP上使用,但不能在Web服务器上使用?

  13. 13

    JavaScript代码可在旧服务器上运行,但不能在新服务器上运行

  14. 14

    为什么我的python的socket.shutdown可以在Windows上运行而不能在Ubuntu上运行?

  15. 15

    httpClient.get在模拟器上可以,但不能在android设备上使用

  16. 16

    电子邮件发送代码可在localhost上运行,但不能在服务器上运行

  17. 17

    电子邮件发送代码可在localhost上运行,但不能在服务器上运行

  18. 18

    地理位置代码可在桌面浏览器上运行,但不能在移动设备上运行

  19. 19

    程序可以在旧设备和新设备的模拟器上运行,但不能在新设备上运行

  20. 20

    php-在浏览器中显示png / image可以在localhost上运行,但不能在aws上运行

  21. 21

    在onclick之后使用.val可以在模拟器中使用,但不能在设备上使用

  22. 22

    键盘扩展可以在模拟器中使用,但不能在设备上使用

  23. 23

    在本地运行一些单元测试设置代码,但不能在构建服务器上运行

  24. 24

    JavaScript警报可以在Firefox上正常运行,但不能在Chrome和资源管理器中运行

  25. 25

    asp.net中的计时器可以在localhost上正常运行,但不能在线运行

  26. 26

    为什么jQuery脚本可以在本地主机上运行但不能在Web服务器上运行?

  27. 27

    TLSv1.2的curl可以在客户端上运行,但不能在服务器上运行

  28. 28

    Microsoft Graph ASPNET Webhooks代码示例可在ngrok上运行,但不能在azure上运行

  29. 29

    代码签名的IPA在iOS7上运行,但不能在iOS8上运行

热门标签

归档