Quand je lance 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
Répondez pour pydot >= 1.1
:
L’incompatibilité de (amont) pydot
a été corrigée par 6dff94b3f1 , et donc pydot >= 1.1
sera compatible avec pyparsing >= 1.5.7
.
Réponse applicable à pydot <= 1.0.28
:
Pour ceux qui y croient, cela est dû aux changements de pyparsing de la version 1.x à la version 2.x. Pour installer pydot à l’aide de pip, commencez par 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
à l'aide de pip
, vous avez plutôt utilisé setup.py
_, alors regardez ceci solution pour désinstaller le paquet. Merci @ qtips.
Il existe un nouveau paquet dans le référentiel pip appelé pydot2 qui fonctionne correctement avec pyparsing2. Je ne pouvais pas rétrograder mes paquets car matplotlib dépend du dernier paquet pyparsing.
Note: python2.7 à partir de macports
pydot a utilisé une variable de module privé (_noncomma) issue de pyparsing. Le diff ci-dessous le corrige à 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:
J'ai créé le dépôt pydot [1], appliqué le correctif Gabi Davar et apporté quelques modifications pour prendre en charge python-3. Le paquet est disponible dans le PyPI [2].
À votre santé
$ 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/
La solution ne consistait pas à installer pydot quelque part, mais "python-pydot" à partir des dépôts officiels d'ubuntu.
J'ai eu à nouveau le problème et ma solution ci-dessus n'a pas fonctionné. Si cela est vrai pour vous et que vous utilisez également 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
Il y a maintenant au moins 2 versions supplémentaires qui semblent supporter PyParsing-2 et Python-3:
site-packages\pydotplus
à site-packages\pydot
pour qu'il fonctionne avec les programmes existants qui importent pydot.une branche pour Python 3
Cela a fonctionné pour moi (Mac OS X 10.9 avec Python 2.7.10 sur Anaconda):
conda uninstall pydot
Ensuite,
conda install pydot
Pyparsing est ensuite déclassé (de 2.x à 1.5.7) lors de l'installation de pydot. Future Googlers: cela m'a permis d'installer et d'importer Theano correctement.
Ce que j’ai fait à la fin après tant d’essais de ce que j’ai vu ici (pseudo séquence pour que ça marche 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'
#
J'ai également rencontré le problème et mon pydot == 1.0.28 en pyparsing == 2.2.0. J'ai résolu le problème en téléchargeant le dernier pydot 1.2.3 (tar.gz) à partir de Google, puis en l'installant hors ligne. Lorsque j'ai mis à jour le pydot dans Ubuntu 14.04, il était indiqué que le pydot 1.0.28 était la version la plus récente. Par conséquent, je télécharge sur Google la version 1.2.3.
Sur OSX Mavericks, le truc suivant a fonctionné ... J'ai eu la même erreur, mais au bas de la page, il y avait aussi une plainte selon laquelle l'exécutable Graphviz n'était pas présent ... Je pense que le problème était que j'avais installé Graphviz avant les autres modules?
brew uninstall graphviz
brew install graphviz
Lorsque les autres solutions ne fonctionnent pas, il s'agit d'une méthode rapide et compliquée pour résoudre le problème:
Cet exemple est tiré de python 2.7 sur Ubuntu 16.04.
Editez le fichier python2.7/site-packages/keras/utils/visualize_util.py et commentez 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 versions les plus récentes de pydot, et l'appel ci-dessus ne fonctionne pas.
Vous devez rétrograder la version 2.x de la version 2.x vers la version 1.5.7 pour que pydot fonctionne correctement.
Pour Win-64, avec Conda, cela a fonctionné pour moi:
conda install -c https://conda.anaconda.org/Trentonoliphant pyparsing=1.5.7
J'ai ensuite désactivé/désinstallé la version 2.x et rechargé pyparsing dans mon script:
pyparsing = reload(pyparsing)
pydot = reload(pydot)
Pour vérifier si vous avez la bonne version en cours d'exécution:
print pyparsing.__version__