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.