NameError: глобальное имя 'dot_parser' не определено

Я играл с алгоритмом дерева решений и пытался построить дерево. Однако IDE сообщила о следующей ошибке:

Couldn't import dot_parser, loading of dot files will not be possible.
<class 'pandas.core.frame.DataFrame'>
    Traceback (most recent call last):
      File "C:/Users/s152730/Desktop/exe1.py", line 70, in <module>
        graph = pydot.graph_from_dot_data(test.getvalue())
      File "C:\Python27\lib\site-packages\pydot.py", line 220, in graph_from_dot_data
        return dot_parser.parse_dot_data(data)
    NameError: global name 'dot_parser' is not defined

Я понятия не имею, как справиться с этой проблемой, потому что я пытался удалить и переустановить оба pydot dan pyparsing, который был предложен в других ответах, но это не помогло.

Вот мой код:

from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import ExtraTreeClassifier
from sklearn import tree
from sklearn.externals.six import StringIO
import pydot
from IPython.display import Image

test = StringIO()
tree.export_graphviz(clf, out_file=test, feature_names = attribute_names)
graph = pydot.graph_from_dot_data(test.getvalue())
graph.writepng('test.png')
image(filename = 'test.png')

Я использую python2.7 и работаю на PyCharm, ОС win8.1. Спасибо за вашу помощь.

3 ответа

Кажется, ваша ошибка в том, что вы пропустили часть библиотеки (pyparsing) из-за неправильного порядка установки.

Смотрите здесь и здесь

Очевидно для инициированного, но не для новичка: Обходной путь должен установить pyparsing < 2.0.0 перед установкой pydot (или пакета, который зависит от pydot.)

$ pip install pyparsing == 1.5.7

Решение, кажется, состоит в том, чтобы сначала удалить pydot а также pyparsing, а затем установить pyparsing будет первый pydot,

Версии, которые необходимо установить, скорее всего, изменятся в будущем, поэтому в настоящий момент вам нужно выполнить что-то вроде следующего: (взято из этого прекрасного ответа)

pip uninstall pyparsing
pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709
pip install pydot

Я только что обновил свой pydotв 1.2.3и ошибка исчезает.

sudo pip install -U pydot

Для меня я нашел отличный совет - вместо этого установить pydotplus, поскольку он совместим с pyparsing v2.0 и выше. Он также имеет то преимущество, что может работать с установкой graphviz от Anaconda. Я использую Anaconda v2.4.1 и на Windows 7 x64 и Graphviz 2.38, установленных с помощью condas.

Другие вопросы по тегам