Python子进程使用import子进程

apl*_*lom 7 python subprocess

这可以以某种方式克服?子进程可以创建子进程吗?

问题是,我有一个现成的应用程序需要调用Python脚本.这个脚本本身可以很好地工作,但它需要调用现有的shell脚本.

示意图问题在以下代码中:

parent.py

import subprocess
subprocess.call(['/usr/sfw/bin/python', '/usr/apps/openet/bmsystest/relAuto/variousSW/child.py','1', '2'])
Run Code Online (Sandbox Code Playgroud)

child.py

import sys
import subprocess
print sys.argv[0]
print sys.argv[1]

subprocess.call(['ls -l'], shell=True)
exit
Run Code Online (Sandbox Code Playgroud)

运行child.py

python child.py 1 2
  all is ok
Run Code Online (Sandbox Code Playgroud)

运行parent.py

python  parent.py
Traceback (most recent call last):
  File "/usr/apps/openet/bmsystest/relAuto/variousSW/child.py", line 2, in ?
    import subprocess
ImportError: No module named subprocess
Run Code Online (Sandbox Code Playgroud)

pyf*_*unc 2

应该没有什么可以阻止您在 child.py 和 Parent.py 中使用子进程

我能够完美地运行它。:)

问题调试:

您正在使用python和/usr/sfw/bin/python。

  1. 裸Python是否指向同一个Python?
  2. 您可以通过输入“which python”来检查吗?

我相信如果您执行以下操作,它会对您有用。

/usr/sfw/bin/python parent.py
Run Code Online (Sandbox Code Playgroud)

或者,您可以将您的更改parent.py code为

import subprocess
subprocess.call(['python', '/usr/apps/openet/bmsystest/relAuto/variousSW/child.py','1', '2'])
Run Code Online (Sandbox Code Playgroud)