python - instalar - ImportError: no se puede importar el nombre ''QtCore''
pyqt anaconda (8)
Actualizar matplotlib hizo el truco por mí:
conda install matplotlib
Estoy recibiendo el siguiente error con las siguientes importaciones. Parece estar relacionado con la importación de pandas. No estoy seguro de cómo depurar / resolver esto.
Importaciones:
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''
Depuración:
$ 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
Encontré otras respuestas pero todas relacionadas con Windows. Estoy usando ubuntu 16.04 con distribución anaconda de python 3.
Encontré una manera de resolver este problema, creo que es mejor no degradar el paquete
import matplotlib
matplotlib.use(''Qt5Agg'')
Este problema apareció después de que traté de instalar el simulador ROS-gazebo para PX4. Bueno, simplemente no pude hacerlo funcionar después de seguir todas las soluciones. Afortunadamente, pude hacerlo eliminando el paquete PyQt5 en /usr/lib/python2.7/dist-packages .... Estoy usando el entorno de Conda, así que tal vez algunos scripts que ejecuté antes de instalar un paquete roto con el comando sudo ... no tengo idea de que es la magia
Intenté todo lo anterior pero fracasé.
Sólo esto funciona para mí:
sudo pip install matplotlib --upgrade
La degradación de pyqt versión 5.6.0 a 4.11.4, y qt de la versión 5.6.0 a 4.8.7 soluciona esto:
$ conda install pyqt=4.11.4
$ conda install qt=4.8.7
El problema en sí se está resolviendo aquí: https://github.com/ContinuumIO/anaconda-issues/issues/1068
La solución de Allan Zelener funciona para mí. Como suplemento,
La ubicación del archivo "matplotlibrc" se determina en el siguiente orden
$PWD/matplotlibrc
(directorio actual)$MATPLOTLIBRC/matplotlibrc
$MPLCONFIGDIR/matplotlibrc
En linux
$HOME/.matplotlib/matplotlibrc
, si existeo
$XDG_CONFIG_HOME/matplotlib/matplotlibrc
(si se define $ XDG_CONFIG_HOME)o
$HOME/.config/matplotlib/matplotlibrc
(si $ XDG_CONFIG_HOME no está definido)
En otras plataformas,
-
$HOME/.matplotlib/matplotlibrc
si se define$HOME
.
-
Por último, busca en
$MATPLOTLIBDATA/matplotlibrc
una copia definida por el sistema.
Si actualizaste pyqt5 desde pyqt4, pyqt4 aún podría existir en tu Anoconda, aunque estaba ausente en la "lista de conda". Incluso si cambió el backend de Qt4Agg a Qt5Agg, matplotlib tendía a usar Qt4Agg de acuerdo con Anaconda3 / Lib / site-packages / matplotlib / backends / qt_compat.py.
Por lo tanto, si instaló pyqt 5.x para Anaconda pero encontró PyQt4 y PyQt5 en Anaconda3 / Lib / site-packages, debe eliminar la carpeta PyQt4 y dejar solo PyQt5.
Las respuestas sugeridas que evitan la degradación de los paquetes no funcionaron para mí. Sin embargo, encontré una solución simple que funcionó para mí.
Mirando a través del archivo "qt_compat.py", el problema parece ser que PyQt5 no está en sys.modules, mientras que debería estarlo. Intenté importarlo primero, lo que funcionó y solucionó el problema.
import PyQt5
import matplotlib.pyplot as plt
Para evitar la degradación, también puede (como lo sugirió tacaswell en el problema) configurar el backend para utilizar Qt5Agg
usando uno de los métodos aquí: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend
Por ejemplo, puede modificar el archivo matplotlibrc ubicado en /your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
y cambiar la línea de fondo al backend : Qt5Agg
. Esto hará que el backend Qt5Agg
el predeterminado en todo el entorno yourenv
conda.