pydev нерешенный импорт, но код работает на холостом ходу - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь написать простой графический интерфейс для графической программы, которую я пишу, она работает в режиме ожидания (Python 3.6.4 (v3.6.4: d48eceb, 19 декабря 2017, 06:04:45) [MSC v.1900 32 бит (Intel)] на win32) без проблем, но когда я пытаюсь запустить в Eclipse, pydev, скрипт не работает.

Я открыл консоль в eclipse и попытался импортировать FigureCanvas (единственное сообщение об ошибке показывает мне), и я получил это сообщение об ошибке:

from matplotlib.backends.backend_qt5agg import FigureCanvas
Backend TkAgg is interactive backend. Turning interactive mode on.
Traceback (most recent call last):
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\qt_compat.py", line 198, in <module>
    from PySide import QtCore, QtGui, __version__, __version_info__
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'PySide'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 16, in <module>
    from .backend_qt5 import (
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\backend_qt5.py", line 18, in <module>
    import matplotlib.backends.qt_editor.figureoptions as figureoptions
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\qt_editor\figureoptions.py", line 20, in <module>
    import matplotlib.backends.qt_editor.formlayout as formlayout
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\qt_editor\formlayout.py", line 56, in <module>
    from matplotlib.backends.qt_compat import QtGui, QtWidgets, QtCore
  File "C:\Users\Daniel\.p2\pool\plugins\org.python.pydev.core_7.1.0.201902031515\pysrc\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\backends\qt_compat.py", line 201, in <module>
    "Matplotlib qt-based backends require an external PyQt4, PyQt5,\n"
ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,
PySide or PySide2 package to be installed, but it was not found.

это часть кода, которая выполняется, как на холостом ходу (который работает), так и на затмении(не работает) # mplwidget.py из PyQt5.QtWidgets import *

from matplotlib.backends.backend_qt5agg import FigureCanvas

from matplotlib.figure import Figure


class MplWidget(QWidget):

    def __init__(self, parent = None):

        QWidget.__init__(self, parent)

        self.canvas = FigureCanvas(Figure())

        vertical_layout = QVBoxLayout()
        vertical_layout.addWidget(self.canvas)

        self.canvas.axes = self.canvas.figure.add_subplot(111)
        self.setLayout(vertical_layout)

это основная функция, которая вызывает mpwidget

# ------------------------------------------------------
# ---------------------- main.py -----------------------
# ------------------------------------------------------
from PyQt5.QtWidgets import*
from PyQt5.uic import loadUi

from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)

import numpy as np
import random

class MatplotlibWidget(QMainWindow):

    def __init__(self):

        QMainWindow.__init__(self)

        loadUi("UI.ui",self)

        self.setWindowTitle("PyQt5 & Matplotlib Example GUI")

        #self.pushButton_generate_random_signal.clicked.connect(self.update_graph)

        self.addToolBar(NavigationToolbar(self.MplWidget.canvas, self))


    def update_graph(self):

        fs = 500
        f = random.randint(1, 100)
        ts = 1/fs
        length_of_signal = 100
        t = np.linspace(0,1,length_of_signal)

        cosinus_signal = np.cos(2*np.pi*f*t)
        sinus_signal = np.sin(2*np.pi*f*t)

        self.MplWidget.canvas.axes.clear()
        self.MplWidget.canvas.axes.plot(t, cosinus_signal)
        self.MplWidget.canvas.axes.plot(t, sinus_signal)
        self.MplWidget.canvas.axes.legend(('cosinus', 'sinus'),loc='upper right')
        self.MplWidget.canvas.axes.set_title('Cosinus - Sinus Signal')
        self.MplWidget.canvas.draw()


app = QApplication([])
window = MatplotlibWidget()
window.show()
app.exec_()

, когда я пытаюсь запустить кодв затмении ничего не происходит, но когда он работает на холостом ходу, все открывается так, как я ожидаю

1 Ответ

0 голосов
/ 11 февраля 2019

Обычно это означает, что некоторые переменные среды не настроены одинаково в обеих средах.

Пожалуйста, посмотрите FAQ: http://www.pydev.org/faq.html#MyProgramDoesNotWorkInPyDev, чтобы узнать, как действовать (в основном, печать среды/ PYTHONPATH для проверки различий и исправления конфигурации на PyDev).

...