我最近在Django == 1.9.1项目中使用了Python3.5 subprocess.run
。该应用程序名为contest
,感兴趣的两个文件是:
现在,compat.py有:
import sys
if sys.version_info >= (3, 5):
from subprocess import (run,
PIPE,
TimeoutExpired)
print('V> 3.5')
else:
from subprocess import (PIPE,
Popen,
TimeoutExpired,
CalledProcessError,
CompletedProcess)
def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
'''Python3.5 subprocess code copied here'''
return CompletedProcess(process.args, retcode, stdout, stderr)
print('V NOT > 3.5')
contest / utils.py包含
from contest.compat import (run,
PIPE,
TimeoutExpired)
def some_function(*args, **kwargs):
p = run(cmd,
timeout=timeout,
stderr=PIPE,
stdout=PIPE,
shell=True)
现在当我用py3.5自己运行这段代码时,运行正常。当它在Django测试服务器内部运行时(也在py3.5上)并且模型的方法调用此实用程序some_function
时会显示错误:
TypeError: run() got an unexpected keyword argument 'stderr'
为什么会这样?
答案 0 :(得分:0)
由于我再也无法重现这个问题,我认为我的环境出了问题。