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.
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
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.
Die Aktualisierung von matplotlib hat den Trick für mich gemacht:
conda install matplotlib
Die Lösung von Allan Zelener funktioniert für mich. Als ergänzung
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.
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.
Ich habe alles versucht, aber gescheitert.
Nur das funktioniert für mich:
Sudo pip install matplotlib --upgrade
Ich habe einen Weg gefunden, um dieses Problem zu lösen
import matplotlib
matplotlib.use('Qt5Agg')
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
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
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.