web-dev-qa-db-ja.com

ImportError:名前「QtCore」をインポートできません

次のインポートで次のエラーが表示されます。それはpandas import。に関連しているようです。これをデバッグ/解決する方法がわかりません。

輸入:

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に関連しています。 python 3.のanacondaディストリビューションでubuntu 16.04を使用しています。

17
Abhishek Bhatia

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

23
georgedeath

ダウングレードを回避するために、(この問題でtacaswellによって提案されたように)以下の方法のいずれかを使用してQt5Aggを使用するようにバックエンドを設定することもできます。 http://matplotlib.org/faq/usage_faq.html #what-is-a-backend

たとえば、/your/path/to/anaconda3/envs/yourenv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrcにあるmatplotlibrcファイルを変更し、バックエンド行をbackend : Qt5Aggに変更できます。これにより、yourenv conda環境全体でQt5Aggバックエンドがデフォルトになります。

5
Allan Zelener

Matplotlibを更新すると、私にとってはうまくいきませんでした。

conda install matplotlib
5
Archie

Allan Zelenerのソリューションは私に適しています。補足として、

  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 if $HOMEが定義されています。
    • 最後に、$MATPLOTLIBDATA/matplotlibrcシステム定義のコピーの場合。

  2. Pyqt4からpyqt5をアップグレードした場合、「condaリスト」には存在しませんでしたが、pyqt4はまだAnocondaに存在する可能性があります。バックエンドを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をそのままにしておく必要があります。

4
bing

上記のすべてを試しましたが、失敗しました。

これだけが私のために働く:

Sudo pip install matplotlib --upgrade
2
Yuchao Jiang

この問題を解決する方法を見つけました。パッケージをダウングレードしない方が良いと思います

import matplotlib
matplotlib.use('Qt5Agg')

ドキュメント

2
olmerg

パッケージのダウングレードを回避するための提案された回答は、私にとってはうまくいきませんでした。しかし、私にとってはうまくいく簡単な修正が見つかりました。

「qt_compat.py」ファイルに目を通すと、問題はPyQt5がsys.modulesに含まれているが、そうであるべきであるようです。私は最初にそれをインポートしようとしましたが、それは機能し、問題を修正しました。

import PyQt5
import matplotlib.pyplot as plt
1
L. IJspeert

PX4用のROS-gazeboシミュレーターをインストールしようとすると、この問題が発生しました。まあ、私はすべてのソリューションを実行した後、それを機能させることに失敗しました。幸い、/ usr/lib/python2.7/dist-packagesの下にあるPyQt5パッケージを削除することで作成できました。..conda環境を使用しています。 ...何が魔法なのかわからない

0
Lu Le

私はこの同じ問題を抱えていて、「from PyQt5.QtCore import QObjects」と入力したインポート文字列を見つけました。クラス定義と同じ「s」なしで「QObject」にする必要があります。

0
Ron Mann