在命令上运行popen时获取异常

时间:2014-04-02 23:47:38

标签: python

我遇到以下错误,当如下运行Popen on命令时,如果我手动尝试该命令,它会起作用, 我不确定这里有什么问题?谁能指点这里有什么问题?

错误: -

Traceback (most recent call last):
File "test.py", line 164, in main
buildpipe = Popen(cmd, stdout=PIPE, stderr=PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory 

代码: -

cmd = 'source build/envsetup.sh && lunch %s-userdebug && make -j32 2>&1 | tee build.log'% (target)

buildpipe = Popen(cmd, stdout=PIPE, stderr=PIPE) 
(output, error) = buildpipe.communicate() 

1 个答案:

答案 0 :(得分:3)

source是一个shell命令。它不是可执行文件。当Popen尝试查找该程序时,它会遇到OSError: No such file or directory

也许shell = True标记可以提供帮助,但请尝试使用. env代替source env。它是相同的命令,但某些shell(例如普通source)不支持.的{​​{1}}别名。

sh调用中使用source并非完全有意义。如果您想在subprocess内运行python,可以直接调用环境的本地virtualenv可执行文件:

python