1

Python用のgraphvizライブラリを使用しています。

ターミナルからスクリプトを実行するとグラフが作成されますが、posix_spawnを使用してCプログラムからスクリプトを開始すると、エラー メッセージが表示されます。

「ValueError: Program dot not found in path」(「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、および etc/paths にドット パスを追加した後、Python スクリプトと C プログラムの両方からパスを印刷しようとすると、/usr/bin:/bin:/usr/sbin:/sbin が表示されますが、echot $ PATH には多くの行があります。

また、Python から PATH を追加しようとしましたsys.path.append('/opt/local/bin/dot')

PS IDE として Webots を使用しています

4

1 に答える 1

2

エラー メッセージは、graphviz がパスにないことを示しています。残りのgraphvizツール$PATHを含むフォルダーが含まれていることを確認してください。dot

[編集] Webots がどこからそのパスを取得したかはわかりません。私の推測では、Mac OS/X は、デスクトップから開始したプロセスの PATH を取り除きます (または、デスクトップ プロセスが非常に基本的な PATH で開始されている可能性があります)。

このような状況では、通常、C プログラムを、環境 (PATH など) を設定する実行可能スクリプトでラップしてから、C プログラム自体を呼び出します。どこからでもスクリプトを実行すると、コードは期待どおりに動作します。

于 2015-05-18T09:13:36.533 に答える