我正在尝试在我的 laravel 应用程序中显示在 python 中使用 plotly 生成的图。
当我python3.8 ../storage/app/public/rcs/line-chart.py
从 laravel 项目的公共目录在终端中执行命令时,会显示该图。但是,当我向我的 laravel 应用程序发送请求以使用symfony 进程组件执行相同的命令时,没有显示任何内容。
这是负责执行命令和生成数据的控制器:
<?php
namespace App\Http\Controllers;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
class FooController extends Controller
{
public function bar()
{
$process = new Process(['python3.8', '../storage/app/public/line-chart.py']);
try {
$process->mustRun();
return $process->getOutput();
} catch (ProcessFailedException $exception) {
return $exception->getMessage();
}
}
}
情节是这样生成的:
import plotly.express as px
df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(df, x="year", y="lifeExp", color='country')
fig.show()
PS:除了使用 javascript 的 plotly 之外,还有什么比使用 symfony 进程组件更好的方法来达到预期的结果?