Проблема graphviz при порождении скрипта Python из C
Я использую библиотеку graphviz для Python.
Когда я запускаю скрипт из терминала, график создается, но когда я запускаю скрипт из программы на C, используя posix_spawn, я получаю сообщение об ошибке, говорящее, что
"ValueError: Программная точка не найдена в пути" (я перепробовал все варианты: "neato", "dot", "twopi", "circo", "fdp", "nop").
Мой скрипт на Python использует местоположение #!/ Usr / local / bin / python. Я попытался явно использовать этот путь и опробовал ту же последовательность:
import pygraphviz as pgv
G = pgv.AGraph(directed=True)
G.add_node(1)
G.get_node(1).attr['label'] = 'hi'
G.draw('test.png', prog='dot')
и это сработало
Я заблудился, почему после вызова скрипта с помощью posix_spawn библиотека graphviz больше не может найти путь.
РЕДАКТИРОВАТЬ:
После добавления точки пути к: bash_profile, bash_rc и т. Д. / Paths, я получаю / usr / bin: / bin: / usr / sbin: / sbin, когда пытаюсь распечатать свой путь как из скрипта Python, так и из программы C, в то время как мой echot $ ПУТЬ имеет много строк.
Также пытался добавить PATH из Python sys.path.append('/opt/local/bin/dot')
PS Я использую Webots в качестве моей IDE
1 ответ
Сообщение об ошибке говорит, что graphviz не на вашем пути. Удостовериться $PATH
содержит папку, которая содержит dot
и остальные инструменты GraphViz.
[РЕДАКТИРОВАТЬ] Я не уверен, откуда Webots берет свой путь; я думаю, что Mac OS/X удаляет PATH процессов, которые вы запускаете с рабочего стола (или, возможно, процесс рабочего стола запускается с очень простой PATH).
В таких ситуациях я обычно оборачиваю C-программу в исполняемый скрипт, который устанавливает среду (например, PATH), а затем вызывает саму C-программу. Когда вы выполняете скрипт из любого места, код будет вести себя как положено.