提问人:Abhishek Bhatia 提问时间:9/19/2016 最后编辑:Abhishek Bhatia 更新时间:7/13/2019 访问量:28466
ImportError:无法导入名称“QtCore”
ImportError: cannot import name 'QtCore'
问:
我在以下导入中出现以下错误。 这似乎与熊猫导入有关。我不确定如何调试/解决这个问题。
进口:
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'
调试:
$ 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 和 python 3 的 anaconda 发行版。
答:
将 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
评论
为了避免降级,您还可以(正如 tacaswell 在问题中建议的那样)使用以下方法之一设置后端:http://matplotlib.org/faq/usage_faq.html#what-is-a-backendQt5Agg
例如,您可以修改位于 中的 matplotlibrc 文件,并将后端行更改为 .这将使后端成为整个 conda 环境中的默认后端。/your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
backend : Qt5Agg
Qt5Agg
yourenv
评论
更新 matplotlib 为我解决了问题:
conda install matplotlib
我尝试了以上所有方法,但都失败了。
只有这对我有用:
sudo pip install matplotlib --upgrade
艾伦·泽莱纳(Allan Zelener)的解决方案对我有用。作为补充,
“matplotlibrc”文件位置按以下顺序确定
$PWD/matplotlibrc
(当前目录)$MATPLOTLIBRC/matplotlibrc
$MPLCONFIGDIR/matplotlibrc
在 Linux 上,
$HOME/.matplotlib/matplotlibrc
,如果存在或 (如果 $XDG_CONFIG_HOME已定义)
$XDG_CONFIG_HOME/matplotlib/matplotlibrc
或 (如果 $XDG_CONFIG_HOME 未定义)
$HOME/.config/matplotlib/matplotlibrc
在其他平台上,
$HOME/.matplotlib/matplotlibrc
if 定义。$HOME
最后,它寻找一个 系统定义的副本。
$MATPLOTLIBDATA/matplotlibrc
如果您从 pyqt4 升级了 pyqt5,pyqt4 仍然可以存在于您的 Anoconda 中,尽管它在“conda 列表”中不存在。即使您将后端从 Qt4Agg 更改为 Qt5Agg,matplotlib 仍然倾向于根据 Anaconda3\Lib\site-packages\matplotlib\backends\qt_compat.py 使用 Qt4Agg。
因此,如果您为 Anaconda 安装了 pyqt 5.x,但在 Anaconda3\Lib\site-packages 中发现了 PyQt4 和 PyQt5,则应删除文件夹 PyQt4 并保留 PyQt5。
我找到了解决这个问题的方法,我觉得最好不要降级包
import matplotlib
matplotlib.use('Qt5Agg')
避免降级软件包的建议答案最终对我不起作用。但是,我找到了一个对我有用的简单修复程序。
查看“qt_compat.py”文件,问题似乎是 PyQt5 不在 sys.modules 中,而它应该在。我先尝试导入它,它起作用并解决了问题。
import PyQt5
import matplotlib.pyplot as plt
在我尝试为 PX4 安装 ROS-gazebo 模拟器后,出现了这个问题。好吧,在遵循所有解决方案后,我只是未能使其工作。幸运的是,我能够通过删除 /usr/lib/python2.7/dist-packages 下的 PyQt5 包来做到这一点。我正在使用 conda 环境,所以也许我在使用 sudo 命令安装损坏的软件包之前运行了一些脚本......不知道有什么魔力
我遇到了同样的问题,并找到了我输入的导入字符串 'from PyQt5.QtCore import QObjects',应该是没有's'的'QObject' 与类定义相同。
评论
from PyQt5.QtCore import QObjects
上一个:对数对数图线性回归
评论
from PyQt5.QtCore import QObject