【问题标题】:Executing Python script from Laravel 4 Controller从 Laravel 4 控制器执行 Python 脚本
【发布时间】:2014-06-21 04:18:15
【问题描述】:

我正在尝试从我的控制器执行 Python 脚本。在我的控制器目录中,我创建了一个名为 pythonScripts 的文件夹,其中放置了我的脚本。从我的控制器函数中,我从数据库中获取 json 格式的数据,并将其传递给 python 以创建一个网络,然后使用 networkx 对网络进行一些分析。问题是我无法执行脚本。以下是我运行脚本的代码。

$output = array();
exec("/pythonScripts/createNetwork.py '{$connections}' ", $output);
return json_encode($output);

$connections 是关于用户与其他用户连接的 JSON 数据。

目前,在 python 脚本中,我只打印传入的任何内容以查看脚本是否正在执行,但作为回报,我得到一个空数组 []。以下是我的python脚本。

import json
import networkx as nx 
import sys
from networkx.readwrite import json_graph


def main():
    userJSONData = sys.argv[1] #the JSON format of user data will be passed into this script.
    print userJSONData


if __name__ == '__main__':
    main()

我不知道脚本是否正在执行...有什么帮助吗?

【问题讨论】:

  • 无关:解析json数据:data = json.loads(sys.argv[1])

标签: php python json laravel laravel-4


【解决方案1】:

你必须从你的脚本执行中获取返回值来检查它是否成功(== 0),如果你的脚本不可执行,你还必须调用python:

exec("/usr/bin/python /pythonScripts/createNetwork.py '{$connections}'", $output, $return);

if ($return) {
    throw new \Exception("Error executing command - error code: $return");
}

var_dump($output);

【讨论】:

  • 谢谢,我在萤火虫中得到以下信息。 "type":"Exception","message":"错误执行命令 - 错误代码:127
  • 现在我的exec() 看起来和你的一样。 exec("python /pythonScripts/createNetwork.py '{$connections}'", $output, $return);
  • 所以显然code 127 表示找不到命令......为什么它会给出这个??
  • 感谢@Antonio,为您解答。我必须告诉脚本的不是 python 路径,显然我必须指定脚本的确切路径。现在可以了。再次感谢。
  • 你可以使用app_path().'/controllers/pythonScript/script.py'保持它“相对”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2010-09-18
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
相关资源
最近更新 更多