Je reçois l'erreur ci-dessous avec les importations suivantes ... Il semble être lié à l'importation de pandas. Je ne suis pas sûr de savoir comment résoudre ce problème.
Importations:
import pandas as pd
import numpy as np
import pdb, math, pickle
import matplotlib.pyplot as plt
Erreur:
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'
Débogage:
$ 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
J'ai trouvé d'autres réponses mais toutes liées à Windows. J'utilise Ubuntu 16.04 avec la distribution anaconda de Python 3.
La mise à niveau de pyqt versions 5.6.0 à 4.11.4 et d'une version 5.6.0 à 4.8.7 résout ce problème:
$ conda install pyqt=4.11.4
$ conda install qt=4.8.7
Le problème lui-même est en cours de résolution ici: https://github.com/ContinuumIO/anaconda-issues/issues/1068
Pour éviter le déclassement, vous pouvez également (comme suggéré par tacaswell dans le numéro) configurer le backend afin qu'il utilise Qt5Agg
en utilisant l'une des méthodes suivantes: http://matplotlib.org/faq/usage_faq.html#what-is-a -backend
Par exemple, vous pouvez modifier le fichier matplotlibrc situé dans /your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
et modifier la ligne de commande en backend : Qt5Agg
. Cela fera du Qt5Agg
le moteur par défaut dans l'environnement yourenv
.
Mettre à jour matplotlib a fait l'affaire pour moi:
conda install matplotlib
La solution d'Allan Zelener fonctionne pour moi. En supplément,
l'emplacement du fichier "matplotlibrc" est déterminé dans l'ordre suivant
$PWD/matplotlibrc
(répertoire actuel)
$MATPLOTLIBRC/matplotlibrc
$MPLCONFIGDIR/matplotlibrc
Sur Linux,
$HOME/.matplotlib/matplotlibrc
, s'il existe
ou $XDG_CONFIG_HOME/matplotlib/matplotlibrc
(si $ XDG_CONFIG_HOME est défini)
ou $HOME/.config/matplotlib/matplotlibrc
(si $ XDG_CONFIG_HOME n'est pas défini)
Sur d'autres plateformes,
$HOME/.matplotlib/matplotlibrc
si $HOME
est défini.Enfin, il recherche dans $MATPLOTLIBDATA/matplotlibrc
une copie définie par le système
Si vous avez mis à niveau pyqt5 à partir de pyqt4, pyqt4 pourrait toujours exister dans votre Anoconda, même s'il était absent de "conda list". Même si vous avez changé le backend de Qt4Agg en Qt5Agg, matplotlib avait toujours tendance à utiliser Qt4Agg selon Anaconda3\Lib\site-packages\matplotlib\backends\qt_compat.py.
Par conséquent, si vous avez installé pyqt 5.x pour Anaconda mais que vous avez trouvé à la fois PyQt4 et PyQt5 dans Anaconda3\Lib\site-packages, vous devez supprimer le dossier PyQt4 et laisser PyQt5 seul.
J'ai essayé tout ce qui précède, mais j'ai échoué.
Seulement cela fonctionne pour moi:
Sudo pip install matplotlib --upgrade
J'ai trouvé un moyen de résoudre ce problème, je pense qu'il est préférable de ne pas rétrograder le package
import matplotlib
matplotlib.use('Qt5Agg')
Les réponses suggérées pour éviter de déclasser les paquets ne fonctionnaient pas pour moi. Cependant, j'ai trouvé une solution simple qui a fonctionné pour moi.
En regardant dans le fichier "qt_compat.py", le problème semble être que PyQt5 n'est pas dans sys.modules, alors qu'il devrait l'être. J'ai d'abord essayé de l'importer, ce qui a fonctionné et résolu le problème.
import PyQt5
import matplotlib.pyplot as plt
Ce problème est apparu après avoir essayé d'installer le simulateur ROS-gazebo pour PX4. Eh bien, je n'ai tout simplement pas réussi à le faire fonctionner après avoir suivi toutes les solutions. Heureusement, j'ai pu le faire en supprimant le paquet PyQt5 sous /usr/lib/python2.7/dist-packages .... J'utilise conda environment, alors quelques scripts que j'ai exécutés avant d'installer un paquet cassé avec la commande Sudo ... Je ne sais pas quelle est la magie