pydot ve graphviz hatası: dot_parser içe aktarılamadı, nokta dosyalarının yüklenmesi mümkün olmayacak


107

Pydot ile çok basit bir kod çalıştırdığımda

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')

Bana şu hata mesajını yazdırıyor:

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

Python 2.7.3 kullanıyorum


6
pip install pydot2bu sorunu çözmeli. Kullanmaktan çok daha iyi pip uninstallçünkü kodu paylaşırsanız, gereksinimlerinizin.txt dosyasına sadece pydot2 ekleyebilir ve kullanıcıların bilmediği komutları çalıştırmasını önleyebilirsiniz.
RussellStewart

Yanıtlar:


220

Cevap pydot >= 1.1:

(Yukarı akış) uyumsuzluğu 6dff94b3f1pydot tarafından düzeltildi ve bu nedenle pydot >= 1.1ile uyumlupyparsing >= 1.5.7 olacaktır .


Cevap pydot <= 1.0.28:

Bununla karşılaşan herhangi biri için, 1.x'ten 2.x sürümüne geçişteki değişikliklerden kaynaklanmaktadır. Pydot'u pip kullanarak kurmak için, önce pyparsing'in eski sürümünü kurun:

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

pyparsingKullanarak yüklemediyseniz pip, bunun yerine kullandıysanız setup.py, paketi kaldırmak için bu çözüme bir göz atın . Teşekkürler @qtips.


1
NetworkX, GraphViz ve pydot'u kurdum, ancak NetworkX ile çalışmak için Graphviz işlevselliğini elde edemedim (örneğin, bu NetworkX örneği başarısız oldu). Almaya devam ettim: global 'dot_parser' adı tanımlı değil . Sizin çözümünüz bu sorunu çözdü.
qtips

1
bu durumda sudo pip uninstallpaketinizi kurduysanız da çalışmaz python setup.py install, bu çözümü takip edin . Bu en azından Mountain Lion OSX
Mac'imdeki durumdu

sudoBir virtualenv kullanıyorsanız olduğu gibi her zaman gerekli olmadığı açıktır. Onun dışında bu benim için çalıştı!
David Reynolds

Ubuntu 12.04'te byparsing yüklerken şu hatayı alıyorum: "Pyparsing istendi == 1.5.7, ancak sürüm 2.0.1 yükleniyor". Sonra yukarıdaki hata hala devam ediyor Bu yüzden çözüm, python yumurtasının indirme konumunu belirlemekti: sudo pip install -Iv pypi.python.org/packages/source/p/pyparsing/…
lefterav

45
Neden sadece değil pip install pyparsing==1.5.7?
Suor

57

Pip deposunda, pyparsing2 ile doğru şekilde çalışan pydot2 adında yeni bir paket var. Paketlerimi düşüremedim çünkü matplotlib yeni pyparsing paketine bağlı.

Not: macports'tan python2.7


7
IMHO Bu yanıt, eski sürüm düşürme Fikri üzerinde düşünülmelidir. Networkx ile de benim için mükemmel çalışıyor. Teşekkürler !
Raghav RV

Hala bu hatayı veriyor ama dot_parser hatası gitti. Çalışmak için pydot kurmalısınız pydotprint.
İnanç Gümüş

21

pydot, pyparsing'den özel bir modül değişkeni (_noncomma) kullandı. Aşağıdaki diff, 2.0.1'i pyparsing için kullanmak üzere düzeltir:

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
Sadece tamlık için, işte bu sorunu ve @ Gabi Davar tarafından belirtilen düzeltmeyi bildiren pydot sorun raporu .
Jack Kelly

7

Pydot deposunu [1] çatalladım, Gabi Davar yamasını ve python-3'ü desteklemek için bazı değişiklikleri uyguladım. Paket PyPI [2] 'de mevcuttur.

Şerefe


1
PyPI sayfası kapalı görünüyor. Bu çok kötü! Herhangi bir fikriniz neden?
Dav Clark

pip paketi bozuk görünüyor. pip install...ortada açık bir hata olmadan başarısız oldu. Görünüşe göre manifesto ve gerçek dosyalar eşleşmiyor. Git deposunu kontrol ediyorum ve mv README.rst READMEsonra python setup.py install. Bu benim için çalıştı :-)
Kenji Noguchi

2
pypi.python.org/pypi/pydot2 bağlantısı bozuk ama pip install pydot2çalışıyor ve bu bağlantı, pypi.python.org/pypi/pydot2/1.0.32 çalışıyor.
Mark Mikofski


5

Çözüm, pydot'u bir yerden değil, resmi ubuntu depolarından "python-pydot" kurmaktı.


25-Ağu-2013 itibariyle pip install python-pydotbenim için çalışmıyor (dağıtım bulunamadı); pip install pydotyapar. Bu yüzden bunun pydotresmi olmayan bir şey olduğunu düşünmüyorum . Belki de bunun yerine bir işletim sistemi dağıtımı yoluyla kuruyordunuz?
Owen S.

5
Pip ile değil, sudo apt-get install python-pydotbenim için yaptım.
Sadık

Bu muhtemelen işe yarar çünkü Ubuntu'nun şu anda python-pyparsing1.5.2'de olması, yukarıda listelenen sürüm uyumsuzluğunu ortadan kaldırıyor. Yukarıdaki düzeltmeye gittim ve o zamandan beri sorun yaşamadım. Teşekkürler!
Owen S.

1
Ne yazık ki Ubuntu'da Saucy pyparsing yükseltildi, ancak pydot uygun şekilde yamalanmadı.
Tully

1
Ubuntu paketini düzeltmek için bir bildirim kaydettim
Tully,

3

Artık PyParsing-2 ve Python-3'ü destekleyen görünen en az 2 sürüm daha var:

  • PyDotPlus tarafından Carlos Jenkins ile bir güzel BuildBot'ın ve fantezi Travis belgeleri . Ancak, klasör adını yerine olarak değiştirmeniz gerekecektir site-packages\pydotplus.site-packages\pydot mevcut programların olduğu ithalat pydot çalışmak için.
  • pydot3k tarafından bmcorser . Ne yazık ki işe yaramadı!
  • James Mills tarafından hazırlanan prologic / pydot , resmi pydot Google kod sayfasından şu şekilde bağlantılıdır ...

    Python 3 uyumluluğu için bir dal

  • ve işte iyi çalışan David Villa'nın pydot2'sine çalışan bir bağlantı: https://pypi.python.org/pypi/pydot2/1.0.32


3

Sorunu tekrar yaşadım ve yukarıdaki çözümüm işe yaramadı. Bu sizin için doğruysa ve Anaconda'yı El Capitan ile Mac'te de kullanıyorsanız, şunu deneyin:

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

3

Sonunda burada gördüğümden birçok denemeden sonra yaptığım şey (networkx için çalışması için sözde sıra):

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

Bu benim için çalıştı (Anaconda'da Python 2.7.10 ile Mac OS X 10.9):

conda uninstall pydot

Sonra,

conda install pydot

Pyparsing daha sonra pydot'un kurulumu üzerine indirgenir (2.x'ten 1.5.7'ye). Geleceğin Google Çalışanları: Bu, Theano'yu doğru şekilde yüklememe ve içe aktarmama izin verdi.


1

OSX Mavericks'te aşağıdakiler hile yaptı ... Aynı hatayı aldım ama altta ayrıca graphviz çalıştırılabilirinin mevcut olmadığına dair bir şikayet vardı ... Sanırım sorun diğer modüllerden önce graphviz'i kurmuştum?

brew uninstall graphviz
brew install graphviz

1

Diğer çözümler işe yaramadığında, sorunu çözmek için bu hızlı ve kirli bir yöntemdir:

Bu örnek, Ubuntu 16.04'teki python 2.7'den alınmıştır.

Python2.7 / site-packages / keras / utils / visualize_util.py dosyasını düzenleyin ve aşağıdaki kod segmentini yorumlayın.

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

find_graphviz (), pydot'un daha yeni sürümlerinde fazlalıktır ve yukarıdaki çağrı çalışmaz.


1

Ayrıca problemle karşılaştım ve pydot == 1.0.28 iken pyparsing == 2.2.0. Google'dan en yeni pydot 1.2.3'ü (tar.gz) indirip çevrimdışı yükleyerek sorunu çözdüm. Ubuntu 14.04'teki pydot'u güncellediğimde, pydot 1.0.28'in en yeni sürüm olduğunu söyledi. Bu nedenle Google'dan 1.2.3 sürümünü indiriyorum.


0

Pydot'un düzgün çalışması için pyparsing'i 2.x sürümünden 1.5.7 sürümüne düşürmeniz gerekir.

Win-64 için Conda kullanarak bu benim için çalıştı:

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

Daha sonra 2.x sürümünü devre dışı bıraktım / kaldırdım ve komut dosyamda pyparsing'i yeniden yükledim:

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

Doğru sürümün çalışıp çalışmadığını kontrol etmek için:

print pyparsing.__version__
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.