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를 requirements.txt에 추가하고 사용자가 익숙하지 않은 명령을 실행하지 않도록 할 수 있기 때문에 사용하는 것보다 훨씬 좋습니다.
RussellStewart 2015

답변:


220

에 대한 답변 pydot >= 1.1:

(상류)의 비 호환성 pydot에 의해 고정되어 6dff94b3f1 , 따라서 pydot >= 1.1것이다 호환pyparsing >= 1.5.7 .


해당되는 답변 pydot <= 1.0.28:

이것을 발견하는 다른 사람에게는 1.x에서 2.x 릴리스로의 pyparsing이 변경 되었기 때문입니다. pip를 사용하여 pydot을 설치하려면 먼저 이전 버전의 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'is not defined . 솔루션이이 문제를 해결했습니다.
qtips

1
sudo pip uninstall경우를 사용하여 패키지를 설치 한 경우 에도 작동하지 않는 경우이 솔루션을 python setup.py install따르십시오 . 이것은 적어도 내 Mountain Lion OSX Mac의 경우였습니다
qtips

sudovirtualenv를 사용하는 것처럼 항상 필요한 것은 아닙니다. 그 외에 이것은 나를 위해 일했습니다!
David Reynolds

Ubuntu 12.04에서 구문 분석을 통해 설치할 때 "요청 된 pyparsing == 1.5.7이지만 버전 2.0.1 설치 중"이라는 오류가 발생합니다. 그런 다음 오류가 위 그래서 해결책은 파이썬 계란의 다운로드 위치를 지정하는 것이다 계속 발생 : sudo는 PIP 설치 -IV pypi.python.org/packages/source/p/pyparsing/...
lefterav

45
왜 안돼 pip install pyparsing==1.5.7?
Suor

57

pyparsing2에서 올바르게 작동하는 pydot2라는 pip 저장소에 새 패키지가 있습니다. matplotlib가 최신 pyparsing 패키지에 의존하기 때문에 내 패키지를 다운 그레이드 할 수 없습니다.

참고 : macports의 python2.7


7
IMHO이 답변은 pyparsing downgrading Idea에 대해 고려해야합니다. networkx에서도 완벽하게 작동합니다. 감사 !
Raghav RV

여전히이 오류를 제공하지만 dot_parser 오류가 사라졌습니다. pydotprint작동 하려면 pydot을 설치해야합니다 .
Inanc Gumus 2014

21

pydot은 pyparsing에서 개인 모듈 변수 (_noncomma)를 사용했습니다. 아래 diff는 pyparsing 2.0.1에 사용하도록 수정합니다.

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에서 언급 한 수정 사항입니다.
Jack Kelly

7

pydot 저장소 [1]를 분기하고 Gabi Davar 패치를 적용하고 python-3을 지원하기위한 일부 변경 사항을 적용했습니다. 패키지는 PyPI [2]에서 사용할 수 있습니다.

건배


1
PyPI 페이지가 다운 된 것 같습니다. 유감 이네요! 이유는 무엇입니까?
Dav Clark

pip 패키지가 손상된 것 같습니다. pip install...명시적인 오류없이 중간에 실패했습니다. 매니페스트와 실제 파일이 일치하지 않는 것 같습니다. git repo를 확인한 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 가 작동합니다.
Mark Mikofski


5

해결책은 어딘가에서 pydot을 설치하는 것이 아니라 공식 우분투 저장소에서 "python-pydot"을 설치하는 것이 었습니다.


2013 년 8 월 25 일 현재 pip install python-pydot저에게 효과가 없습니다 (배포를 찾을 수 없음). pip install pydot않습니다. 그래서 나는 그것이 pydot반드시 비공식적 이라고 생각하지 않습니다 . 대신 OS 배포를 통해 설치 했습니까?
Owen S.

5
sudo apt-get install python-pydot이 아니라 나를 위해 해냈습니다.
Sadik

우분투는 현재 python-pyparsing1.5.2 버전이므로 위에 나열된 버전 비 호환성을 피할 수 있기 때문에 작동 할 것입니다 . 나는 위의 수정을 사용했고 그 이후로 문제가 없었습니다. 감사!
Owen S.

1
불행히도 Saucy에서 pyparsing이 업그레이드되었지만 pydot이 적절하게 패치되지 않았습니다.
Tully

1
Ubuntu 패키지 수정 티켓을 제출했습니다. bugs.launchpad.net/ubuntu/+source/pydot/+bug/1321135
Tully

3

이제 PyParsing-2 및 Python-3을 지원하는 것으로 보이는 버전이 2 개 이상 더 있습니다.

  • PyDotPlus 에 의해 카를로스 젠킨스 편안한와 함께 buildbot과 화려한 트래비스 문서를 . 그러나 pydot을 가져 오는 기존 프로그램에서 작동 site-packages\pydotplus하려면 폴더 이름을에서로 변경해야합니다 site-packages\pydot.
  • pydot3k by bmcorser . 슬프게도 작동하지 않았습니다!
  • 공식 pydot Google 코드 페이지에서 링크 된 James Mills의 prologic / pydot ...

    Python 3 호환성을위한 분기

  • 다음은 David Villa의 pydot2에 대한 작업 링크입니다. https://pypi.python.org/pypi/pydot2/1.0.32


3

다시 문제가 발생했고 위의 솔루션이 작동하지 않았습니다. 그것이 사실이고 El Capitan이 설치된 Mac에서도 Anaconda를 사용하고 있다면 다음을 시도하십시오.

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

3

내가 여기서 본 것에서 많은 시도를 한 끝에 내가 한 일 (networkx에서 작동하는 의사 시퀀스) :

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

이것은 나를 위해 일했습니다 (Anaconda에서 Python 2.7.10을 사용하는 Mac OS X 10.9).

conda uninstall pydot

그때,

conda install pydot

그런 다음 pydot 설치시 Pyparsing이 2.x에서 1.5.7로 다운 그레이드됩니다. 향후 Google 직원 :이를 통해 Theano를 올바르게 설치하고 가져올 수있었습니다.


1

OSX Mavericks에서 다음과 같은 트릭을 수행했습니다 ... 동일한 오류가 발생했지만 하단에도 graphviz 실행 파일이 없다는 불만이있었습니다 ... 문제가 다른 모듈보다 먼저 graphviz를 설치 한 것 같습니다.

brew uninstall graphviz
brew install graphviz

1

다른 솔루션이 작동하지 않는 경우 프로브를 해결하는 빠르고 더러운 방법입니다.

이 예제는 Ubuntu 16.04의 python 2.7에서 가져온 것입니다.

python2.7 / site-packages / 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

나는 또한 pyparsing == 2.2.0 동안 문제와 내 pydot == 1.0.28을 만났습니다. Google에서 최신 pydot 1.2.3 (tar.gz)을 다운로드 한 다음 오프라인으로 설치하여 문제를 해결했습니다. 우분투 14.04에서 pydot을 업데이트했을 때 pydot 1.0.28이 최신 버전이라고 말했습니다. 따라서 Google에서 1.2.3 버전을 다운로드합니다.


0

pydot가 제대로 작동하려면 pyparsing을 버전 2.x에서 버전 1.5.7로 다운 그레이드해야합니다.

Conda를 사용하는 win-64의 경우 이것은 나를 위해 일했습니다.

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

그런 다음 2.x 버전을 비활성화 / 제거하고 스크립트에서 pyparsing을 다시로드했습니다.

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

올바른 버전이 실행 중인지 확인하려면 :

print pyparsing.__version__
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.