Python Py3.5 subprocess.run意外kwarg';stderr';
我最近在Django==1.9.1项目中使用了Python3.5Python Py3.5 subprocess.run意外kwarg';stderr';,python,django,subprocess,python-import,python-3.5,Python,Django,Subprocess,Python Import,Python 3.5,我最近在Django==1.9.1项目中使用了Python3.5子流程。该应用程序名为contest,感兴趣的两个文件是: 竞赛/兼容.py 竞赛/utils.py 现在,compat.py有: import sys if sys.version_info >= (3, 5): from subprocess import (run, PIPE, TimeoutEx
子流程。该应用程序名为contest
,感兴趣的两个文件是:
- 竞赛/兼容.py
- 竞赛/utils.py
现在,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_函数
时,将显示一个错误,大意是:
TypeError:run()得到了一个意外的关键字参数“stderr”
为什么会发生这种情况?由于我无法再重现此问题,我假设我的环境出了问题。显示完整的回溯。添加调试输出,以确保使用了子流程.run()
(例如,添加帮助(运行)
)