web-dev-qa-db-fra.com

ImportError: impossible d'importer le nom 'QtCore'

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.

17
Abhishek Bhatia

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

23
georgedeath

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.

5
Allan Zelener

Mettre à jour matplotlib a fait l'affaire pour moi: 

conda install matplotlib
5
Archie

La solution d'Allan Zelener fonctionne pour moi. En supplément,

  1. 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

  2. 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.

4
bing

J'ai essayé tout ce qui précède, mais j'ai échoué. 

Seulement cela fonctionne pour moi:

Sudo pip install matplotlib --upgrade
2
Yuchao Jiang

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')

Documentation

2
olmerg

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
1
L. IJspeert

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

0
Lu Le