如何在Views.py中运行子进程 - Django

问题描述 投票:0回答:1

我正在尝试使用源scripts/earnings.py和用户生成的symbol参数运行脚本。输出是一个matplotlib图,我试图将其放入我的模板中。

from django.shortcuts import render
import subprocess
from backtests.scripts import earnings

def index(request):

    if 'symbol' in request.GET:
        symbol = request.GET.get('symbol','Invalid Symbol')
        request.session['symbol'] = symbol
    else:
        symbol = request.session['symbol']


    process = subprocess.run(["python earnings", "symbol"], stdout=subprocess.PIPE)

    output = process.stdout

    return render(request, 'backtests/earnings.html', {'symbol' : symbol, 'output' : output})

截至目前,我得到了错误

FileNotFoundError:[Errno 2]没有这样的文件或目录:'python earnings':'python earnings'

django django-views subprocess
1个回答
0
投票

调用subprocess.run的正确方法是将命令的每个部分作为单独的列表条目:

    process = subprocess.run(["python", "earnings.py", "symbol"], stdout=subprocess.PIPE)

正如@Bestastttung评论的那样,你的道路可能也是错误的。尝试scripts/earnings.py,或文件的绝对路径。

© www.soinside.com 2019 - 2024. All rights reserved.