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

标签 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 中设置了一些断点,但它没有捕获任何内容。有没有办法调试子进程,而不是深入子进程模块代码本身的代码?

最佳答案

我猜你的主要项目改变了PYTHONPAH (sys.path)。查看os.environ您的项目并尝试在此环境中运行第二个脚本。

关于python - 如何在Python中调试subprocess.call()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721226/

相关文章:

javascript - Javascript 和 Python 之间的 Web Socket

函数返回字符数组的 C 问题

c++ - C++ 筛选代码中的不可见内存错误

javascript - 我应该如何从 Java 应用程序运行 NodeJS?

python - Python 子进程在什么情况下获得 SIGPIPE?

Python - 如何在退出程序(在分离 screen 上运行)之前启动子进程?

python - (530, '5.7.0 Must issue a STARTTLS command first. 135sm7372342lfb.28 - gsmtp',你的邮件ID)

python - 使用 lxml 获取内部 DTD

python - 如何使用 Python OpenCV cv2.PCAProject 压缩单个数组

c#:查找错误:if(false)