ImportError: невозможно импортировать имя 'QtCore'

17

Я получаю следующую ошибку со следующим импортом. Кажется, это связано с импортом панд. Я не уверен, как отлаживать / решать эту проблему.

Импорт

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.

    
задан Abhishek Bhatia 19.09.2016 в 15:38
источник

6 ответов

23

Снижение производительности 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

Сама проблема решается здесь: Ссылка

    
ответ дан georgedeath 19.09.2016 в 17:50
источник
5

Чтобы избежать понижения, вы также можете (как было предложено tacaswell в выпуске), установить бэкэнд для использования Qt5Agg , используя один из методов здесь: Ссылка

Например, вы можете изменить файл matplotlibrc, расположенный в /your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc , и изменить бэкэнд-линию на backend : Qt5Agg . Это сделает основной компонент Qt5Agg по умолчанию в среде yourenv conda.

    
ответ дан Allan Zelener 28.09.2016 в 22:15
источник
5

Обновление matplotlib сделало трюк для меня:

conda install matplotlib
    
ответ дан Archie 18.10.2016 в 18:52
источник
4

Решение Аллана Зеленнера работает для меня. В качестве дополнения,

  1. расположение файла «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 для системная копия.

  2. Если вы обновили 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 самостоятельно.

ответ дан bing 01.06.2017 в 11:46
источник
2

Я пробовал все выше, но не смог.

Только это работает для меня:

sudo pip install matplotlib --upgrade
    
ответ дан Yuchao Jiang 08.04.2017 в 01:51
источник
2

Я нашел способ решить эту проблему, я думаю, лучше не понижать пакет

import matplotlib matplotlib.use('Qt5Agg')

документация

    
ответ дан olmerg 01.06.2017 в 16:47
источник