2014-11-18 7 views
8

मैं एक PyQt5 एप्लिकेशन लिखने की कोशिश कर रहा हूं जो इसके अंदर मैटलप्लिब प्लॉट एम्बेड करता है। हालांकि, मुझे एक गड़बड़ का समय है जहां मैं PyQt4 द्वारा हस्तक्षेप के कारण matplotlib PyQt5 ब्रेक स्थापित करता हूं। यह ऐसा गलती से हुआ देखा जा सकता है:पीईक्यूटी 5 और मैटलप्लिब 1.4.2 - एक ब्रेक स्थापित करना अन्य

In [1]: import matplotlib.backends.backend_qt5agg 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-6d2c21e1d629> in <module>() 
----> 1 import matplotlib.backends.backend_qt5agg 

C:\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py in <module>() 
    16 
    17 from .backend_agg import FigureCanvasAgg 
---> 18 from .backend_qt5 import QtCore 
    19 from .backend_qt5 import QtGui 
    20 from .backend_qt5 import FigureManagerQT 

C:\Anaconda3\lib\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 

C:\Anaconda3\lib\site-packages\matplotlib\backends\qt_compat.py in <module>() 
    89  if QT_API in [QT_API_PYQT, QT_API_PYQTv2]: # PyQt4 API 
    90 
---> 91   from PyQt4 import QtCore, QtGui 
    92 
    93   try: 

ImportError: cannot import name 'QtCore' 

मैं इस चक्र कई बार के माध्यम से चले गए हैं:

In [2]: from PyQt5 import QtCore, QtGui, QtWidgets 
--------------------------------------------------------------------------- 
RuntimeError        Traceback (most recent call last) 
<ipython-input-2-43848d5bd21e> in <module>() 
----> 1 from PyQt5 import QtCore, QtGui, QtWidgets 

RuntimeError: the PyQt5.QtCore and PyQt4.QtCore modules both wrap the QObject class 

अगर मैं PyQt4 निकाल सकते हैं (और पुनः स्थापित PyQt5 के बाद से हटाने के PyQt4 घूंट को हटाता है) मैं तो यह समस्या है , विभिन्न स्रोतों से प्रत्येक को स्थापित करना। मैं पाइथन 3.4 के एनाकोंडा वितरण का उपयोग कर रहा हूं, जिसे मैंने पहले ही अनइंस्टॉल/पुनर्स्थापित कर दिया है।

मुझे कुछ गलत करना होगा, लेकिन मैं ईमानदारी से यह नहीं समझ सकता कि यह क्या है।

किसी भी सहायता की सराहना की जाएगी

+0

पर किस प्रकार की प्रणाली स्थापित कर रहे हैं? – Ajean

+0

विंडोज 8.1 पर काम करना – user3014097

उत्तर

11

अपने matplotlib PyQt4 पर निर्भर करता है के रूप में, आप PyQt5 बैकएंड उपयोग करने के लिए matplotlib के लिए मजबूर करने की जरूरत है। इस तरह:

import matplotlib 
matplotlib.use("Qt5Agg") 

इस समारोह पहली बार के लिए pyplot आयात करने से पहले ही बुलाया जाना चाहिए या, यदि आप pyplot का उपयोग नहीं कर रहे हैं, तो matplotlib.backends आयात करने से पहले इसे कहा जाना चाहिए।

+0

क्या आपका मतलब है "PyQT_5_ पर निर्भर करता है"? – GreenAsJade

+0

यदि आवश्यक हो तो आप 'matplotlib.use (" Qt5Agg ", force = True) ' – Jayesh

+0

" कॉल करना चाहते हैं यदि आप ipython में pylab का उपयोग कर रहे हैं, तो आपको' ipython --pylab = 'qt5'' –

0

समस्या यह है कि Matplotlib QT5 का उपयोग करता है और आप QT4 का उपयोग कर रहे हैं। समस्या को हल करने के लिए, आप matplotlib को qpl4 का उपयोग करने के लिए मजबूर कर सकते हैं, जो matplotlibrc को संपादित कर रहा है, जो \ Lib \ site-packages \ matplotlib \ mpl-data enter image description here

+0

को संशोधित करने की आवश्यकता हो सकती है स्रोत कोड सीधे एक अच्छा अभ्यास नहीं है, अगर मैं लाइब्रेरी बैकएंड का चयन करने का विकल्प नहीं देता तो मैं कर सकता था, लेकिन matplolib आपको वह क्षमता प्रदान करता है ताकि मैं देख सकूं कि आपका उत्तर पर्याप्त नहीं है। – eyllanesc

+0

मेरे मामले, जब मैं आयात matplotlib matplotlib.use ("Qt5Agg") का इस्तेमाल किया के लिए मैं एक त्रुटि –

+0

अनुदेश किसी अन्य आयात करने से पहले अपनी फ़ाइल के शीर्ष पर रखा जाना चाहिए मिला – eyllanesc

संबंधित मुद्दे