我遇到以下错误,当如下运行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()
答案 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