如何在Python中调试subprocess.call()?

时间:2013-07-18 10:41:43

标签: python debugging subprocess pydev archlinux

我正在尝试了解项目的源代码。我一行一行地运行项目,一切正常,直到这一行:

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中设置一些断点,它没有捕捉到任何东西。有没有办法调试子进程,而不是深入研究子进程模块代码本身的代码?

1 个答案:

答案 0 :(得分:2)

我猜您的主要项目会改变PYTHONPAHsys.path)。查看项目的os.environ并尝试使用此环境运行第二个脚本。