ImportError: невозможно импортировать имя 'QtCore'
Я получаю следующую ошибку со следующим импортом.
Кажется, это связано с импортом pandas. Я не уверен, как отлаживать/решать эту проблему.
Импорт
import pandas as pd
import numpy as np
import pdb, math, pickle
import matplotlib.pyplot as plt
Ошибка:
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
Я нашел другие ответы, но все связанные с Windows.
Я использую ubuntu 16.04 с дистрибутивом anaconda для python 3.
Ответы
Ответ 1
Снижение производительности pyqt версии 5.6.0 до 4.11.4 и qt с версии 5.6.0 до 4.8.7 устраняет это:
$ conda install pyqt=4.11.4
$ conda install qt=4.8.7
Сама проблема решается здесь: https://github.com/ContinuumIO/anaconda-issues/issues/1068
Ответ 2
Чтобы избежать понижения, вы также можете (как было предложено tacaswell в выпуске) установить backend для использования Qt5Agg
с использованием одного из методов здесь: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend
Например, вы можете изменить файл matplotlibrc, расположенный в /your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
, и изменить бэкэнд-линию на backend : Qt5Agg
. Это сделает бэкэнд Qt5Agg
по умолчанию во всей среде yourenv
conda.
Ответ 3
Обновление matplotlib сделало трюк для меня:
conda install matplotlib
Ответ 4
Решение Аллан Зеленер работает для меня. В качестве дополнения,
-
местоположение файла "matplotlibrc" определяется в следующем порядке
-
$PWD/matplotlibrc
(текущий каталог)
-
$MATPLOTLIBRC/matplotlibrc
-
$MPLCONFIGDIR/matplotlibrc
-
В Linux,
-
$HOME/.matplotlib/matplotlibrc
, если он существует
-
или $XDG_CONFIG_HOME/matplotlib/matplotlibrc
(если
$ XDG_CONFIG_HOME)
-
или $HOME/.config/matplotlib/matplotlibrc
(если
$ XDG_CONFIG_HOME не определен)
-
На других платформах
-
$HOME/.matplotlib/matplotlibrc
, если определено $HOME
.
-
Наконец, он выглядит в $MATPLOTLIBDATA/matplotlibrc
для
системная копия.
-
Если вы обновили pyqt5 от pyqt4, pyqt4 все еще может существовать в вашей Anoconda, хотя он отсутствовал в списке "conda". Даже если вы изменили бэкенд от Qt4Agg до Qt5Agg, matplotlib все еще имел тенденцию использовать Qt4Agg в соответствии с Anaconda3\Lib\site-packages\matplotlib\backends\qt_compat.py.
Поэтому, если вы установили pyqt 5.x для Anaconda, но нашли и PyQt4 и PyQt5 в Anaconda3\Lib\site-packages, вы должны удалить папку PyQt4 и оставить PyQt5 самостоятельно.
Ответ 5
Я пробовал все выше, но не смог.
Только это работает для меня:
sudo pip install matplotlib --upgrade
Ответ 6
Я нашел способ решить эту проблему, я думаю, что лучше не понижать пакет
import matplotlib
matplotlib.use('Qt5Agg')
документация
Ответ 7
Предложенные ответы, которые позволяют избежать понижения пакетов, не спомогли мне. Однако я нашел простое исправление, которое сработало для меня.
Просматривая файл "qt_compat.py", кажется, что проблема заключается в том, что PyQt5 отсутствует в sys.modules, хотя так и должно быть. Сначала я попытался импортировать его, что сработало и устранило проблему.
import PyQt5
import matplotlib.pyplot as plt
Ответ 8
Эта проблема появилась после того, как я попытался установить симулятор ROS-беседки для PX4. Ну, я просто не смог заставить его работать после выполнения всех решений. К счастью, я смог сделать это, удалив пакет PyQt5 в /usr/lib/python2.7/dist-packages.... Я использую среду conda, поэтому, возможно, некоторые сценарии, которые я запускал перед установкой поврежденного пакета с помощью команды sudo... понятия не имею, что такое магия
Ответ 9
Проверьте, если ваш 'из PyQt5.QtCore импорт QObject
Ответ 10
У меня возникла та же проблема, и я нашел мою строку импорта, которую я набрал "из PyQt5.QtCore import QObjects", и должен быть "QObject" без "s", то же самое с определением класса.