ошибка pydot и graphviz: не удалось импортировать парсер точек, загрузка файлов точек не будет возможна


когда я запускаю очень простой код с 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.

Я использую python 2.7.3

14 107

14 ответов:

ответ pydot >= 1.1:

несовместимость (вверх по течению)pydot была установлена 6dff94b3f1 и так pydot >= 1.1 будет совместимая с pyparsing >= 1.5.7.


ответ применим к pydot <= 1.0.28:

для всех, кто сталкивается с этим, это связано с изменениями в pyparsing от 1.x к 2.релиз X. Чтобы установить pydot с помощью pip, сначала установите старую версию pyparsing:

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

если вы не установили pyparsing используя pip, но вместо того, чтобы использовать setup.py, тогда взгляните на это решение для удаления пакета. Спасибо @qtips.

в репо pip есть новый пакет под названием pydot2, который правильно работает с pyparsing2. Я не мог понизить свои пакеты, потому что matplotlib зависит от более нового пакета pyparsing.

Примечание: python2. 7 от macports

pydot использовал частную переменную модуля (_noncomma) из pyparsing. Ниже 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:

$ sudo pip uninstall pydot

$ sudo pip install pydot2

см. следующую ссылку: http://infidea.net/troubleshooting-couldnt-import-dot_parser-loading-of-dot-files-will-not-be-possible/

Я разветвил репозиторий pydot [1], применил патч Gabi Davar и некоторые изменения для поддержки python-3. Пакет доступен в PyPI [2].

Ура

решение состояло не в том, чтобы установить pydot откуда-то, а "python-pydot" из официальных репозиториев ubuntu.

теперь есть по крайней мере еще 2 версии, которые поддерживают PyParsing-2 и Python-3:

  • PyDotPlus by Карлос Дженкинс С хорошим Трэвисом buildbot и фантазии документация. Однако вам нужно будет изменить название папки с site-packages\pydotplus до site-packages\pydot для того, чтобы работать с существующими программами, которые импортируют pydot.
  • pydot3k by bmcorser. к сожалению, не так не работает!
  • prologic/pydot Джеймсом Миллсом, связанным с официальной кодовой страницей Google pydot as ...

    ветка для совместимости с Python 3

  • и вот рабочая ссылка на pydot2 Дэвида Вильи, которая отлично работает: https://pypi.python.org/pypi/pydot2/1.0.32

У меня снова была проблема, и мое решение выше не сработало. Если это верно для вас, и вы также используете Anaconda на Mac с El Capitan, попробуйте следующее:

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

это сработало для меня (Mac OS X 10.9 с Python 2.7.10 на Anaconda):

conda uninstall pydot

затем,

conda install pydot

Pyparsing затем понижается (от 2.x до 1.5.7) после установки pydot. Будущие гуглеры: это позволило мне правильно установить и импортировать Theano.

что я сделал в конце после стольких попыток из того, что я видел здесь (псевдо-последовательность для работы в 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'
#

на OSX Mavericks следующее сделало трюк... Я получил ту же ошибку, но внизу была также жалоба на то, что исполняемый файл graphviz отсутствует... Я думаю, что проблема была в том, что я установил graphviz до других модулей?

brew uninstall graphviz
brew install graphviz

когда другие решения не работают, это быстрый и грязный метод для решения проблемы:

этот пример из python 2.7 на Ubuntu 16.04.

редактировать файл 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, и приведенный выше вызов не работает.

Я также встретил проблему и мой pydot= = 1.0.28 во время pyparsing==2.2.0. Я исправил проблему, загрузив новейший pydot 1.2.3 (tar.gz) от google, а затем установить его в автономном режиме. Когда я обновил pydot в ubuntu 14.04, он сказал, что pydot 1.0.28 является самой новой версией. Поэтому я загружаю из google версию 1.2.3.

вам нужно понизить pyparsing от версии 2.x до версии 1.5.7, чтобы заставить pydot работать правильно.

для win-64, используя Conda, это сработало для меня:

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

затем я отключил/удалил 2.x версия и перезагрузка pyparsing в моем скрипте:

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

чтобы проверить, есть ли у вас правильная версия работает:

print pyparsing.__version__