erreur pydot et graphviz: impossible d'importer l'analyseur de points, le chargement de fichiers de points ne sera pas possible
quand j'exécute un code très simple avec 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')
il m'imprime le message d'erreur:
Couldn't import dot_parser, loading of dot files will not be possible.
j'utilise python 2.7.3
14 réponses
Réponse pydot >= 1.1
:
l'incompatibilité de (en amont) pydot
a été fixée par 6dff94b3f1 , et donc pydot >= 1.1
sera compatible avec pyparsing >= 1.5.7
.
réponse applicable à pydot <= 1.0.28
:
pour toute autre personne qui tombe sur ceci, c'est dû aux changements de pyparsing de 1.x pour les 2.x version. De installer pydot en utilisant pip, d'abord installer l'ancienne version de pyparsing:
pip install pyparsing==1.5.7
pip install pydot==1.0.28
si vous n'avez pas installé pyparsing
en utilisant pip
, mais plutôt utilisé setup.py
, alors jetez un oeil à cette solution pour désinstaller le paquet. Merci @qtips.
il y a un nouveau paquet dans le PIP repo appelé pydot2 qui fonctionne correctement avec pyparsing2. Je n'ai pas pu déclasser mes paquets parce que matplotlib dépend du nouveau paquet pyparsing.
Note: python2.7 de macports
pydot utilisé une variable de module privé (_noncomma) de pyparsing. La différence ci-dessous la fixe à utiliser pour 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
voir le lien suivant: http://infidea.net/troubleshooting-couldnt-import-dot_parser-loading-of-dot-files-will-not-be-possible/
j'ai bifurqué le dépôt pydot [1], appliqué le patch Gabi Davar et quelques modifications pour supporter python-3. Le paquet est disponible dans le PyPI [2].
Cheers
la solution n'était pas d'installer pydot à partir de quelque part, mais" python-pydot " à partir de dépôts ubuntu officiels.
il y a maintenant au moins 2 autres versions qui semblent supporter PyParsing-2 et Python-3:
- PyDotPlus par Carlos Jenkins avec une belle travis buildbot et de fantaisie documentation . Cependant, vous devrez changer le nom de son dossier
site-packages\pydotplus
ensite-packages\pydot
pour qu'il fonctionne avec les programmes existants qui importent pydot. - pydot3k par bmcorser . malheureusement, n'a pas fonctionné!
- prologic/pydot par James Mills des liens à partir de la officiel pydot page Google code ...
une branche pour Python 3 compatibilité
- et voici un lien vers le pydot2 de David Villa qui fonctionne bien: https://pypi.python.org/pypi/pydot2/1.0.32
j'ai eu le problème à nouveau et ma solution ci-dessus n'a pas fonctionné. Si cela est vrai pour vous et que vous utilisez aussi Anaconda sur un Mac avec El Capitan, essayez ceci:
conda install --channel https://conda.anaconda.org/RMG graphviz`
conda install --channel https://conda.anaconda.org/RMG pydot
cela a fonctionné pour moi (Mac OS X 10.9 avec Python 2.7.10 sur Anaconda):
conda uninstall pydot
Puis,
conda install pydot
Pyparsing est ensuite déclassé (à partir de 2.x à 1.5.7) lors de l'installation de pydot. Futurs Googleurs: cela m'a permis d'installer et d'importer Theano correctement.
ce que j'ai fait à la fin après tant d'essais à partir de ce que j'ai vu ici (pseudo séquence pour qu'il fonctionne pour 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'
#
Sur OSX Mavericks, la suite fait le tour... J'ai eu la même erreur mais en bas il y avait aussi une plainte que l'exécutable de graphviz n'était pas présent... Je pense que le problème est que j'avais installé graphviz avant les autres modules?
brew uninstall graphviz
brew install graphviz
quand d'autres solutions ne fonctionnent pas, c'est une méthode rapide et sale pour résoudre le probem:
cet exemple est de python 2.7 sur Ubuntu 16.04.
éditer le fichier python2.7/site-packages/keras/utils/visualize_util.py et commenter le segment de code ci-dessous.
if not pydot.find_graphviz():
raise ImportError('Failed to import pydot. You must install pydot'
' and graphviz for `pydotprint` to work.')
find_graphviz() est redondant sur les nouvelles versions de pydot, et l'appel ci-dessus ne fonctionne pas.
j'ai aussi rencontré le problème et mon pydot==1.0.28 tout pyparsing==2.2.0. J'ai corrigé le problème en téléchargeant le plus récent pydot 1.2.3(tar.gz) de google et ensuite l'installer hors ligne. Lorsque j'ai mis à jour le pydot dans ubuntu 14.04, il est dit que le pydot 1.0.28 est la version la plus récente. Par conséquent, je télécharge à partir de google la version 1.2.3.
vous devez déclasser pyparsing de la version 2.x vers la version 1.5.7 pour que pydot fonctionne correctement.
Pour win-64, en utilisant Conda, cela a fonctionné pour moi:
conda install -c https://conda.anaconda.org/Trentonoliphant pyparsing=1.5.7
j'ai alors désactivé/désinstallé le 2.version x et rechargé pyparsing dans mon script:
pyparsing = reload(pyparsing)
pydot = reload(pydot)
pour vérifier si vous avez la bonne version:
print pyparsing.__version__