pydot और graphviz त्रुटि: dot_parser आयात नहीं कर सका, डॉट फ़ाइलें लोड करना संभव नहीं होगा


107

जब मैं pydot के साथ एक बहुत ही सरल कोड चलाता हूं

import pydot
graph = pydot.Dot(graph_type='graph')

for i in range(3):

  edge = pydot.Edge("king", "lord%d" % i)
  graph.add_edge(edge)

vassal_num = 0
for i in range(3):
  for j in range(2):
    edge = pydot.Edge("lord%d" % i, "vassal%d" % vassal_num)
    graph.add_edge(edge)
    vassal_num += 1

graph.write_png('example1_graph.png')

यह मुझे त्रुटि संदेश प्रिंट करता है:

Couldn't import dot_parser, loading of dot files will not be possible.

मैं अजगर 2.7.3 का उपयोग कर रहा हूँ


6
pip install pydot2इस समस्या को ठीक करना चाहिए। उपयोग करने की तुलना में बहुत अच्छा है pip uninstallक्योंकि यदि आप कोड साझा करते हैं तो आप बस अपनी आवश्यकताओं के लिए pydot2 जोड़ सकते हैं।
रसेलस्टवर्ट

जवाबों:


220

उत्तर के लिए pydot >= 1.1:

(अपस्ट्रीम) की असंगति 6dff94b3f1pydot द्वारा तय की गई है , और इस तरह से संगत होगी ।pydot >= 1.1pyparsing >= 1.5.7


उत्तर के लिए लागू pydot <= 1.0.28:

किसी और के लिए जो इस पार आता है, यह 1.x से 2.x रिलीज के लिए pyparsing में परिवर्तन के कारण है। पाइप का उपयोग करके पीडॉट स्थापित करने के लिए, पहले पीपरसिंग के पुराने संस्करण को स्थापित करें:

pip install pyparsing==1.5.7
pip install pydot==1.0.28

यदि आपने pyparsingउपयोग करना स्थापित नहीं किया है pip, लेकिन इसके बजाय उपयोग किया जाता है setup.py, तो पैकेज की स्थापना रद्द करने के लिए इस समाधान पर एक नज़र डालें । धन्यवाद @qtips


1
मैंने NetworkX, GraphViz और pydot स्थापित किया है, लेकिन NetworkX के साथ काम करने के लिए Graphviz कार्यक्षमता प्राप्त नहीं कर सका (उदाहरण के लिए यह NetworkX उदाहरण विफल)। मुझे मिल रहा है: वैश्विक नाम 'dot_parser' परिभाषित नहीं है । आपके समाधान ने इस समस्या को हल कर दिया।
क्यूटी

1
भी, sudo pip uninstallकाम नहीं करता है अगर आपने python setup.py installउस मामले में उपयोग करके अपना पैकेज स्थापित किया है , तो इस समाधान का पालन करें । यह कम से कम मेरे माउंटेन लायन OSX मैक
qtips

sudoस्पष्ट रूप से हमेशा आवश्यक नहीं है, जैसे कि आप एक virtualenv का उपयोग कर रहे हैं। इसके अलावा, यह मेरे लिए काम करता है!
डेविड रेनॉल्ड्स

Ubuntu 12.04 में मुझे यह त्रुटि मिलती है, जब byparsing स्थापित करते हैं: "अनुरोधित pyparsing == 1.5.7, लेकिन संस्करण 2.0.1 स्थापित करना"। फिर ऊपर त्रुटि तब भी होती है, इसलिए समाधान अजगर अंडे के डाउनलोड स्थान को निर्दिष्ट करना था: sudo pip install -Iv pypi.python.org/packages/source/p/pyparsing/…
lefter

45
सिर्फ क्यों नहीं pip install pyparsing==1.5.7?
सुर

57

पाइप रेपो में एक नया पैकेज है जिसे pydot2 कहा जाता है जो pyparsing2 के साथ सही ढंग से कार्य करता है। मैं अपने पैकेज को डाउनग्रेड नहीं कर सका क्योंकि मैटप्लोटिब नए पेपरसिंग पैकेज पर निर्भर करता है।

नोट: macports से python2.7


7
IMHO इस जवाब को आइडिया को अपग्रेड करने वाले पाइपरिंग पर माना जाना चाहिए। मेरे लिए पूरी तरह से नेटवर्कएक्स के साथ भी काम करता है। धन्यवाद !
राघव आर.वी.

अभी भी यह त्रुटि दे रहा है लेकिन dot_parser त्रुटि हो गई है। pydotprintकाम करने के लिए आपको pydot इंस्टॉल करना होगा ।
इनक गमूस

21

pydot ने pyparsing से एक निजी मॉड्यूल चर (_noncomma) का उपयोग किया। नीचे 2.0.2 का उपयोग करने के लिए इसे अलग करता है:

diff --git a/dot_parser.py b/dot_parser.py
index dedd61a..138d152 100644
--- a/dot_parser.py
+++ b/dot_parser.py
@@ -25,8 +25,9 @@ from pyparsing import __version__ as pyparsing_version
 from pyparsing import ( nestedExpr, Literal, CaselessLiteral, Word, Upcase, OneOrMore, ZeroOrMore,
     Forward, NotAny, delimitedList, oneOf, Group, Optional, Combine, alphas, nums,
     restOfLine, cStyleComment, nums, alphanums, printables, empty, quotedString,
-    ParseException, ParseResults, CharsNotIn, _noncomma, dblQuotedString, QuotedString, ParserElement )
+    ParseException, ParseResults, CharsNotIn, dblQuotedString, QuotedString, ParserElement )

+_noncomma = "".join( [ c for c in printables if c != "," ] )

 class P_AttrList:

2
बस पूर्णता के लिए, यहाँ pydot के लिए मुद्दा रिपोर्ट है जो इस मुद्दे की रिपोर्ट करती है और @Gabi Davar द्वारा उल्लिखित फिक्स है।
जैक केली

7

मैंने पीडॉट रिपॉजिटरी [1] को कांटा, गैबी डावर पैच लागू किया और अजगर -3 का समर्थन करने के लिए कुछ बदलाव किए। पैकेज PyPI [2] में उपलब्ध है।

चियर्स


1
PyPI पृष्ठ नीचे दिखाई देता है। यह बहुत बुरा है! कोई विचार क्यों?
दाव क्लार्क

लगता है कि पाइप पैकेज टूट गया है। pip install...स्पष्ट त्रुटि के बिना बीच में विफल। प्रकट और वास्तविक फ़ाइलों से मेल नहीं खाता जैसा दिखता है। मैं git रेपो की जांच करता हूं, और mv README.rst READMEफिर python setup.py install। इसने मेरे लिए काम किया :-)
केनजी नोगुची

2
लिंक, pypi.python.org/pypi/pydot2 , टूट गया है, लेकिन pip install pydot2काम करता है और यह लिंक, pypi.python.org/pypi/pydot2/1.0.32 , काम करता है।
मार्क मिकोफ़्स्की

6

$ sudo pip uninstall pydot

$ sudo pip install pydot2

निम्न लिंक देखें: http://infidea.net/troublesourcing-couldnt-import-dot_parser-loading-of-dot-files-will-not-be-possible/


मैंने इसके विपरीत किया pip uninstall pydot2और फिर pip install pydotत्रुटि को ठीक करने के लिए। यहाँ सही उत्तर पर लिंक है: github.com/pydot/pydot/issues/166#issuecomment-356066120
FooBar167

5

समाधान कहीं से pydot स्थापित करने के लिए नहीं था, लेकिन आधिकारिक ubuntu repositories से "अजगर-पाइडोट"।


25-अगस्त -2016 तक pip install python-pydotमेरे लिए काम नहीं करता (वितरण नहीं मिला); pip install pydotकर देता है। इसलिए मुझे नहीं लगता कि pydotयह जरूरी नहीं है कि अनौपचारिक है। शायद आप इसके बजाय OS वितरण के माध्यम से स्थापित कर रहे थे?
ओवेन एस।

5
पाइप से नहीं, sudo apt-get install python-pydotमेरे लिए किया।
सादिक

यह शायद इसलिए काम करेगा क्योंकि उबंटू में वर्तमान python-pyparsingमें 1.5.2 है, जो ऊपर सूचीबद्ध संस्करण असंगति से बचा जाता है। मैं ऊपर तय के साथ गया था और तब से कोई समस्या नहीं है। धन्यवाद!
ओवेन एस।

1
दुर्भाग्य से उबंटू में सॉसी के रूप में पाइपरिंग को अपग्रेड किया गया है, लेकिन पीडोट को उचित रूप से पैच नहीं किया गया है।
टुल्ली

1
मैंने उबंटू पैकेज को ठीक करने के लिए एक टिकट दायर किया है: Bugs.launchpad.net/ubuntu/+source/pydot/+bug/1321135
टली

3

अब कम से कम 2 और संस्करण हैं जो PyParsing-2 और पायथन -3 का समर्थन करते हैं:

  • PyDotPlus द्वारा कार्लोस जेनकींस एक अच्छा के साथ buildbot और फैंसी ट्रैविस प्रलेखन । लेकिन अगर आप से अपने फ़ोल्डर का नाम बदलने के लिए की आवश्यकता होगी site-packages\pydotplusकरने के लिए site-packages\pydotयह जरूरी है कि मौजूदा कार्यक्रमों आयात pydot के साथ काम करने के लिए।
  • bmcorser द्वारा pydot3kदुख की बात है, काम नहीं किया!
  • जेम्स मिल्स द्वारा प्रोलॉगिक / पीडॉट को आधिकारिक पीडॉट गूगल कोड पेज से लिंक किया गया ...

    पायथन 3 संगतता के लिए एक शाखा

  • और यहाँ डेविड विला के pydot2 के लिए एक कड़ी काम कर रही है जो ठीक काम करता है: https://pypi.python.org/pypi/pydot2/1.0.32


3

मुझे फिर से समस्या हुई और मेरे उपरोक्त समाधान से काम नहीं चला। अगर यह आपके लिए सही है और आप ए कैपोंडा के साथ मैक पर एनाकोंडा का उपयोग कर रहे हैं, तो यह प्रयास करें:

conda install --channel https://conda.anaconda.org/RMG graphviz`
conda install --channel https://conda.anaconda.org/RMG pydot

3

मैंने यहाँ जो देखा उससे बहुत कोशिशों के बाद आखिर में मैंने क्या किया (इसके लिए संजय के लिए काम करने का छद्म क्रम):

apt-get remove python-pydot
pip install pydotplus
apt-get install libcgraph6
apt-get install python-pygraphviz


# pip freeze | grep pydot
 pydotplus==2.0.2
# pip freeze | grep pyparsing
pyparsing==2.2.0
# pip freeze | grep graphviz
pygraphviz==1.2
# python -c 'import pydotplus'
#

2

यह मेरे लिए काम किया (एनाकोंडा पर पायथन 2.7.10 के साथ मैक ओएस एक्स 10.9):

conda uninstall pydot

फिर,

conda install pydot

Pydarsing तो pydot की स्थापना पर (2.x से 1.5.7 तक) डाउनग्रेड किया गया है। भविष्य के गोगलर्स: इससे मुझे थीनो को सही ढंग से स्थापित करने और आयात करने की अनुमति मिली।


1

OSX Mavericks पर निम्नलिखित ने चाल चली ... मुझे वही त्रुटि मिली लेकिन नीचे एक शिकायत यह भी थी कि ग्राफविज़ निष्पादन योग्य मौजूद नहीं था ... मुझे लगता है कि समस्या यह थी कि मैंने अन्य मॉड्यूल से पहले ग्राफविज़ स्थापित किया था?

brew uninstall graphviz
brew install graphviz

1

जब अन्य समाधान काम नहीं करते हैं, तो यह प्रोबम को हल करने के लिए एक त्वरित और गंदा तरीका है:

यह उदाहरण उबंटू 16.04 पर अजगर 2.7 से है।

फ़ाइल python2.7 / site-package / keras / utils / visualize_util.py संपादित करें और नीचे दिए गए कोड सेगमेंट पर टिप्पणी करें।

if not pydot.find_graphviz():
    raise ImportError('Failed to import pydot. You must install pydot'
                      ' and graphviz for `pydotprint` to work.')

find_graphviz () pydot के नए संस्करणों पर बेमानी है, और उपरोक्त कॉल काम नहीं करता है।


1

मैं समस्या से भी मिला और मेरे pydot == 1.0.28 को pyparsing == 2.2.0 करते हुए। मैंने Google से नवीनतम pydot 1.2.3 (tar.gz) डाउनलोड करके समस्या को ठीक किया और फिर इसे ऑफ़लाइन स्थापित किया। जब मैंने ubuntu 14.04 में pydot को अपडेट किया, तो उसने कहा कि pydot 1.0.28 सबसे नया संस्करण है। इसलिए मैं Google से 1.2.3 संस्करण डाउनलोड करता हूं।


0

Pydot को सही ढंग से काम करने के लिए आपको संस्करण 2.x से संस्करण 1.5x पर डाउनग्रेड करने की आवश्यकता है।

जीत -64 के लिए, कॉनडा का उपयोग करते हुए, इसने मेरे लिए काम किया:

conda install -c https://conda.anaconda.org/Trentonoliphant pyparsing=1.5.7

मैंने तब 2.x संस्करण को अक्षम / अनइंस्टॉल किया और अपनी स्क्रिप्ट में पुनः लोड किया गया:

pyparsing = reload(pyparsing)
pydot = reload(pydot)

यह जाँचने के लिए कि आपके पास सही संस्करण चल रहा है:

print pyparsing.__version__
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.