błąd pydot i graphviz: nie można zaimportować parsera kropek, ładowanie plików kropek nie będzie możliwe

Kiedy uruchamiam bardzo prosty kod z 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')

Wyświetla mi komunikat o błędzie:

Couldn't import dot_parser, loading of dot files will not be possible.

Używam Pythona 2.7.3

Author: Sadik, 2013-04-11

14 answers

Odpowiedź na pydot >= 1.1:

Niezgodność (upstream) pydot została ustalona przez 6dff94b3f1 , a zatem pydot >= 1.1 będzie zgodna z pyparsing >= 1.5.7.


Odpowiedź na pydot <= 1.0.28:

Dla każdego, kto natknie się na to, jest to spowodowane zmianami w pyparsingu z 1.x do 2.x release. Aby zainstalować pydot za pomocą pip, najpierw zainstaluj starszą wersję pyparsing:

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

Jeśli nie zainstalowałeś pyparsing używając pip, ale zamiast tego użyłeś setup.py, a następnie spójrz na to rozwiązanie , Aby odinstalować pakiet. Dzięki @ qtips.

 220
Author: Jonathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:33

W repo pip jest nowy pakiet o nazwie pydot2, który działa poprawnie z pyparsing2. Nie mogłem obniżyć wersji moich pakietów, ponieważ matplotlib zależy od nowszego pakietu pyparsing.

Uwaga: python2. 7 z macports

 57
Author: Dana the Sane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-11 20:08:20

Pydot użył zmiennej prywatnej modułu (_noncomma) z pyparsingu. Poniższy diff naprawia to, aby używać go do pyparsingu 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:
 21
Author: Gabi Davar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-31 11:49:44

Rozszyfrowałem repozytorium pydot [1], zastosowałem łatkę Gabi Davar i kilka zmian do obsługi Pythona-3. Pakiet jest dostępny w PyPI [2].

Cheers

 7
Author: david villa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-11 00:58:46

$ sudo pip uninstall pydot

$ sudo pip install pydot2

Zobacz następujący link: http://infidea.net/troubleshooting-couldnt-import-dot_parser-loading-of-dot-files-will-not-be-possible/

 6
Author: Jing Zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-29 05:04:32

Rozwiązaniem nie było zainstalowanie pydota skądś, ale "python-pydot" z oficjalnych repozytoriów ubuntu.

 5
Author: Sadik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-25 20:40:36

Są teraz co najmniej 2 kolejne wersje, które wydają się wspierać PyParsing - 2 i Python-3:

 3
Author: Mark Mikofski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-17 20:05:12

Miałem problem ponownie i moje powyższe rozwiązanie nie działa. Jeśli to prawda i używasz Anaconda na komputerze Mac z El Capitan, spróbuj tego:

conda install --channel https://conda.anaconda.org/RMG graphviz`
conda install --channel https://conda.anaconda.org/RMG pydot
 3
Author: scottlittle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-28 02:57:37

Co zrobiłem na końcu po tylu próbach z tego co tu widziałem (pseudo Sekwencja żeby zadziałało na 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'
#
 3
Author: sten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 21:23:25

To działało dla mnie (Mac OS X 10.9 z Pythonem 2.7.10 na Anacondzie):

conda uninstall pydot

Then,

conda install pydot

Pyparsing jest następnie obniżany (z 2.x do 1.5.7) po instalacji pydota. Przyszłych Googlerów: to pozwoliło mi poprawnie zainstalować i zaimportować

 2
Author: scottlittle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 01:29:17

Na OSX Mavericks:.. Dostałem ten sam błąd, ale na dole była też skarga, że plik wykonywalny graphviz nie był obecny... Myślę, że problem polegał na tym, że zainstalowałem graphviz przed innymi modułami?

brew uninstall graphviz
brew install graphviz
 1
Author: ecordo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-14 14:58:09

Gdy inne rozwiązania nie działają, jest to szybka i brudna metoda rozwiązania probemu:

Ten przykład pochodzi z Pythona 2.7 na Ubuntu 16.04.

Edytuj plik python2.7/site-packages/keras/utils/visualize_util.py i skomentuj poniższy fragment kodu.

if not pydot.find_graphviz():
    raise ImportError('Failed to import pydot. You must install pydot'
                      ' and graphviz for `pydotprint` to work.')

Find_graphviz() jest zbędne w nowszych wersjach pydota i powyższe wywołanie nie działa.

 1
Author: Totoro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 07:02:05

Ja też spotkałem się z problemem i mój pydot==1.0.28 podczas pyparsingu= = 2.2.0. Problem naprawiłem pobierając najnowszy pydot 1.2.3(tar.gz) z google, a następnie zainstalować go w trybie offline. Kiedy zaktualizowałem pydot w ubuntu 14.04, napisano, że pydot 1.0.28 jest najnowszą wersją. Dlatego ściągam z google wersję 1.2.3.

 1
Author: Cna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-24 11:49:33

Musisz obniżyć pyparsing z wersji 2.x do wersji 1.5.7 aby pydot działał poprawnie.

Dla win-64, przy użyciu Conda, to działało dla mnie:

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

Następnie wyłączyłem / odinstalowałem 2.wersja x i reloaded pyparsing w moim skrypcie:

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

Aby sprawdzić, czy działa odpowiednia wersja:

print pyparsing.__version__
 0
Author: Sander van den Oord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-14 08:42:19