我正在尝试使用python子进程类顺序调用一系列命令,这将创建一个openCV virtualenv,然后调用我的python脚本(需要在cv virtualenv中运行)
到目前为止,我的代码(在stackoverflow的很多人的帮助下)是:
import sys
import os
from subprocess import check_call, STDOUT
DEVNULL = open(os.devnull,'r+b',0)
with open('log', 'wb', 0) as file:
check_call("""set -e -x
{python} -mpip install --user virtualenv virtualenvwrapper
rm -rf ~/.cache/pip
export WORKON_HOME=$HOME/.virtualenvs
source ~/.local/bin/virtualenvwrapper.sh
source ~/.bashrc
mkvirtualenv cv
cd /home/douglas/Desktop/TestePython/Assets
{python} novo.py
""".format(python=sys.executable),shell=True,
executable='/bin/bash',stdin=DEVNULL,
stdout=file, stderr=STDOUT, close_fds=True)
这给了我这个错误:
Traceback (most recent call last):
File "programa.py", line 20, in <module>
stdout=file, stderr=STDOUT, close_fds=True)
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'set -e -x
/usr/bin/python -mpip install --user virtualenv virtualenvwrapper
rm -rf ~/.cache/pip
export WORKON_HOME=$HOME/.virtualenvs
source ~/.local/bin/virtualenvwrapper.sh
source ~/.bashrc
mkvirtualenv cv
cd /home/douglas/Desktop/TestePython/Assets
/usr/bin/python novo.py
' returned non-zero exit status 1
在日志中我得到了
/bin/bash: line 4: /home/douglas/.local/bin/virtualenvwrapper.sh:
No such file or directory
但文件存在。
主要目标是像在终端中那样执行所有命令,序列非常重要