webentwicklung-frage-antwort-db.com.de

ImportError: Name 'QtCore' kann nicht importiert werden

Ich erhalte die folgende Fehlermeldung mit den folgenden Importen. Ich bin nicht sicher, wie ich dieses Problem beheben kann.

Importe:

import pandas as pd
import numpy as np
import pdb, math, pickle
import matplotlib.pyplot as plt

Error:

In [1]: %run NN.py
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/home/abhishek/Desktop/submission/a1/new/NN.py in <module>()
      2 import numpy as np
      3 import pdb, math, pickle
----> 4 import matplotlib.pyplot as plt
      5 
      6 class NN(object):

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/pyplot.py in <module>()
    112 
    113 from matplotlib.backends import pylab_setup
--> 114 _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
    115 
    116 _IP_REGISTERED = None

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/backends/__init__.py in pylab_setup()
     30     # imports. 0 means only perform absolute imports.
     31     backend_mod = __import__(backend_name,
---> 32                              globals(),locals(),[backend_name],0)
     33 
     34     # Things we pull in from all backends

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/backends/backend_qt4agg.py in <module>()
     16 
     17 
---> 18 from .backend_qt5agg import FigureCanvasQTAggBase as _FigureCanvasQTAggBase
     19 
     20 from .backend_agg import FigureCanvasAgg

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py in <module>()
     14 
     15 from .backend_agg import FigureCanvasAgg
---> 16 from .backend_qt5 import QtCore
     17 from .backend_qt5 import QtGui
     18 from .backend_qt5 import FigureManagerQT

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py in <module>()
     29     figureoptions = None
     30 
---> 31 from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__
     32 from matplotlib.backends.qt_editor.formsubplottool import UiSubplotTool
     33 

/home/abhishek/anaconda3/lib/python3.5/site-packages/matplotlib/backends/qt_compat.py in <module>()
    135     # have been changed in the above if block
    136     if QT_API in [QT_API_PYQT, QT_API_PYQTv2]:  # PyQt4 API
--> 137         from PyQt4 import QtCore, QtGui
    138 
    139         try:

ImportError: cannot import name 'QtCore'

Debugging:

$ python -c "import PyQt4"
$ python -c "from PyQt4 import QtCore"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'QtCore'
$ conda list | grep qt
jupyter-qtconsole-colorschemes 0.7.1                     <pip>
pyqt                      5.6.0                    py35_0  
qt                        5.6.0                         0  
qtawesome                 0.3.3                    py35_0  
qtconsole                 4.2.1                    py35_0  
qtpy                      1.0.2                    py35_0 

Ich habe andere Antworten gefunden, aber alle bezogen auf Windows. Ich verwende Ubuntu 16.04 mit Anaconda-Verteilung von Python 3.

17
Abhishek Bhatia

Durch das Downgrade von pyqt Version 5.6.0 auf 4.11.4 und qt von Version 5.6.0 auf 4.8.7 wird dies behoben:

$ conda install pyqt=4.11.4
$ conda install qt=4.8.7

Das Problem selbst wird hier gelöst: https://github.com/ContinuumIO/anaconda-issues/issues/1068

23
georgedeath

Um ein Downgrade zu vermeiden, können Sie (wie von tacaswell in der Ausgabe vorgeschlagen wurde) das Backend so einstellen, dass Qt5Agg mit einer der folgenden Methoden verwendet wird: http://matplotlib.org/faq/usage_faq.html#what-is-a -backend

Zum Beispiel können Sie die matplotlibrc-Datei in /your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc ändern und die Backend-Zeile in backend : Qt5Agg ändern. Dadurch wird das Qt5Agg-Backend in der gesamten yourenv conda-Umgebung zum Standard.

5
Allan Zelener

Die Aktualisierung von matplotlib hat den Trick für mich gemacht: 

conda install matplotlib
5
Archie

Die Lösung von Allan Zelener funktioniert für mich. Als ergänzung

  1. der Speicherort der Datei "matplotlibrc" wird in der folgenden Reihenfolge bestimmt

    • $PWD/matplotlibrc (aktuelles Verzeichnis)

    • $MATPLOTLIBRC/matplotlibrc

    • $MPLCONFIGDIR/matplotlibrc

    • Unter Linux

      • $HOME/.matplotlib/matplotlibrc, falls vorhanden

      • oder $XDG_CONFIG_HOME/matplotlib/matplotlibrc (wenn $ XDG_CONFIG_HOME definiert ist)

      • oder $HOME/.config/matplotlib/matplotlibrc (wenn $ XDG_CONFIG_HOME nicht definiert ist)

    • Auf anderen Plattformen

      • $HOME/.matplotlib/matplotlibrc wenn $HOME definiert ist.
    • Zuletzt sucht er in $MATPLOTLIBDATA/matplotlibrc nach einer vom System definierten Kopie.

  2. Wenn Sie pyqt5 von pyqt4 aufgerüstet haben, könnte pyqt4 in Ihrer Anoconda noch vorhanden sein, obwohl es in der "conda list" nicht vorhanden war. Selbst wenn Sie das Backend von Qt4Agg in Qt5Agg geändert haben, verwendet Matplotlib immer noch Qt4Agg gemäß Anaconda3\Lib\site-packages\matplotlib\backends\qt_compat.py.

    Wenn Sie pyqt 5.x für Anaconda installiert haben, aber PyQt4 und PyQt5 in Anaconda3\Lib\site-packages gefunden haben, sollten Sie den Ordner PyQt4 löschen und PyQt5 in Ruhe lassen.

4
bing

Ich habe alles versucht, aber gescheitert. 

Nur das funktioniert für mich:

Sudo pip install matplotlib --upgrade
2
Yuchao Jiang

Ich habe einen Weg gefunden, um dieses Problem zu lösen

import matplotlib
matplotlib.use('Qt5Agg')

Dokumentation

2
olmerg

Die vorgeschlagenen Antworten, die ein Downgrade von Paketen vermeiden, haben für mich nicht funktioniert. Ich fand jedoch ein einfaches Update, das für mich funktionierte.

Bei der Suche in der Datei "qt_compat.py" scheint das Problem zu sein, dass PyQt5 nicht in sys.modules enthalten ist, obwohl dies der Fall sein sollte. Ich habe zuerst versucht, es zu importieren, was funktioniert und das Problem behoben wurde.

import PyQt5
import matplotlib.pyplot as plt
1
L. IJspeert

Dieses Problem wurde angezeigt, nachdem ich versucht hatte, den ROS-Pavillon-Simulator für PX4 zu installieren. Nun, ich habe es einfach nicht geschafft, es zu funktionieren, nachdem ich alle Lösungen verfolgt habe. Glücklicherweise konnte ich das PyQt5-Paket unter /usr/lib/python2.7/dist-packages löschen. Ich verwende die Conda-Umgebung. Vielleicht habe ich einige Skripts ausgeführt, bevor ich ein defektes Paket mit dem Sudo-Befehl installiere ... Ich habe keine Ahnung, was die Magie ist

0
Lu Le

Ich hatte das gleiche Problem und fand meine Importzeichenfolge, die ich 'from PyQt5.QtCore import QObjects' eingegeben hatte und sollte 'QObject' ohne die 's' mit Klassendefinition sein.

0
Ron Mann