最近、プロジェクトのソース コードを理解しようとしています。プロジェクトを 1 行ずつ実行すると、次の行まですべて正常に動作します。
res = subprocess.call(command, env=os.environ)
変数「command」を確認したところ、この関数はコマンドを別の python スクリプトにスローし、サブプロセスで実行しようとするだけであることがわかりました。そこで、Eclipse から飛び出し、同じディレクトリの下で Terminal からコマンドを実行しようとしました。
これが私が得たものです:
Traceback (most recent call last):
File "/home/elderry/Projects/git/tahoe-lafs/support/bin/tahoe", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2850, in <module>
working_set.require(__requires__)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 696, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 594, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: allmydata-tahoe==1.10.0.post27
その後、方向性を完全に失いました。サブプロセスはどこで実行され続けましたか? スクリプトがプログラムではうまく機能するのに、ターミナルでは機能しないのはなぜですか? そのスクリプトもプロジェクトに含まれているため、Eclipse でいくつかのブレークポイントを設定したことを期待して、何もキャッチしませんでした。サブプロセスモジュールのコード自体のコードに飛び込むのではなく、サブプロセスにデバッグする方法はありますか?