ошибка 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 ответов:
ответ
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__