运行python的更好方法&从PHP显示python错误

2024-10-02 08:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的实验室运行一个Web服务器,它基本上有一堆我用python编写的用于处理和分析表格数据的脚本

我有一个DigitalOcean droplet,上面部署了一个Laravel应用程序。当我想要运行脚本时,我让用户上传一些数据文件,然后从PHP控制器运行:

shell_exec(python my_script.py arg1 arg2 etc);

问题是,我的开发环境和“生产”环境之间的依赖关系和库存在差异。因此,当我尝试从Web服务器运行脚本时,出现python错误,shell_exec返回的对象就是null。当PHP blade模板尝试解析/获取此对象的数据时,我会遇到如下错误:

enter image description here

在本例中,“matchCount”只是一个存储在python列表中的变量,如下所示:

#Label peptides we found experimentally but do not have an in silico match for... as to predict contaminants
output = {
    'sequence': protSeq,
    'peptides': pepList,
    'observablePeptideCount': str(len(pepList)),
    'possibleObserved': possibleObserved,
    'matchCount': matchCount,
    'coverage': matchSumAA/protSeqAALength*100,
    'massList': massList,
    'tolerances': tolerances,
}
output = json.dumps(output)

问题是,我知道python脚本在某个地方失败了,但是错误日志没有给出任何原因或位置的指示。是否有某种方法可以让网页输出python错误,以便在生产环境中更正它

有没有更好的方法来完成这一切?谢谢你的帮助


Tags: 数据对象服务器脚本weboutput环境错误
1条回答
网友
1楼 · 发布于 2024-10-02 08:25:07

我不建议您在生产过程中打印内容,但如果这是最后的手段,您可以尝试以下方法:

<?php
$output = '';
$result = '';

exec('python my_script.py arg1 arg2 etc 2>&1', $output, $result);

var_dump($output); // all the output is here
var_dump($result); // gives an exit code, might be 1 if it's error

相关问题 更多 >

    热门问题