pygraphviz OSError: Формат: точка не распознана. Используйте один из:

Я хочу построить дерево, сгенерированное DEAP, с помощью pygraphviz. Я пытался следовать примеру из этого документа DEAP, но получил следующую ошибку:

Traceback (most recent call last):
  File "<input>", line 24, in <module>
  File "C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py", line 1399, in layout
    data = self._run_prog(prog, ' '.join([args, "-T", fmt]))
  File "C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py", line 1364, in _run_prog
    raise IOError(b"".join(errors).decode(self.encoding))
OSError: Format: "dot" not recognized. Use one of:

Вроде бы после Use one of: должны быть какие-то слова, но их нет. Моя среда Python==3.6,graphviz==3.41,pygraphviz==1.5. graphviz и pygraphviz устанавливаются через conda.

Кстати, я попробовал следующий метод:

  1. установите graphviz и добавьте C:\Program Files (x86)\Graphviz2.38\bin в системную среду.
  2. conda install pydot, conda install pydot-ng

но это все еще не работает.

Дополнительная информация: другой макет, предоставленный pygraphviz, такой как neato fdp twopi, работает хорошо. Только dot не работает!


person xxyao    schedule 22.07.2019    source источник
comment
Доступна ли точечная программа в PATH?   -  person albert    schedule 22.07.2019
comment
извините, я не знаю, как добавить точечную программу в PATH...   -  person xxyao    schedule 22.07.2019
comment
Пожалуйста, найдите, как изменить путь в Интернете или переполнение стека поиска. Я думаю, что есть и другие вопросы, относящиеся к той же теме (проблемы conda, graphviz и path)   -  person albert    schedule 22.07.2019
comment
извините, что снова беспокою. Я пробовал следующий метод: 1, установить graphviz и добавить C:\Program Files (x86)\Graphviz2.38\bin в системную среду. 2, conda install pydot, conda install pydot-ng. но это все еще не работает. Не могли бы вы сказать мне, что означает программа точка. Огромное спасибо!!   -  person xxyao    schedule 23.07.2019
comment
В каталоге C:\Program Files (x86)\Graphviz2.38\bin должна быть программа с названием dot.exe. Вы можете проверить это с помощью where dot. Когда программа присутствует, вы можете дать в окне терминала команду dot --version, чтобы узнать, можете ли вы ее запустить. Если это удастся, это должно быть что-то в установке conda pydot, которая отменяет стандартный путь (я не знаю инструмента conda / установка pydot).   -  person albert    schedule 23.07.2019


Ответы (4)


У меня такая же проблема. И решил это, выполнив «точка -c» в conda cmd.

person Huang Qiang    schedule 10.02.2020
comment
Спасибо, сэр! Это сработало с Windows 10 и pyton 3.8.5 в conda. - person Grzegorz Krug; 22.04.2021

Я сделал кое-что, что можно считать читерством, но надеюсь, что это поможет. Во-первых, agraph.py учитывает положение каталога, поэтому вы можете поставить рабочую точку впереди других.

import os
os.environ["PATH"] = "C:\\Program Files\\Graphviz\\bin" + os.pathsep + os.getenv("PATH")

Затем я изменил файл agraph.py, который может находиться в C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py, строка 1561 с

if os.name == "nt":

в

if os.name == "nt" or os.name == "dot":
person Saul    schedule 30.04.2021

Следуйте за ответом @Saul, это сработало для меня. Я думаю, что основная причина может заключаться в том, что agraph.py разрешает только ограниченную переменную среды PATH, поэтому даже вы добавляете C:\\Program Files\\Graphviz\\bin по-прежнему не работает.

Но будьте осторожны, я предлагаю, чтобы решение для этого способа было защищено ниже

GVZPath = "C:\\Program Files\\Graphviz\\bin"
if (os.getenv("PATH").find(GVZPath))!=0:
    os.environ["PATH"] = "C:\\Program Files\\Graphviz\\bin" + os.pathsep + os.getenv("PATH")
person Ray Ronnaret    schedule 10.05.2021

Точно, просто откройте среду anaconda Prompt и введите команду dot -c, и ошибка будет исправлена.

введите здесь описание изображения

person JOHN WAYLER ING INFORMTICA Y D    schedule 11.08.2020
comment
Если вы найдете ответ полезным, пожалуйста, проголосуйте за него, не публикуйте его повторно. - person Aimery; 11.08.2020