通过PHP执行时未导入Python包

时间:2019-06-30 05:26:13

标签: php python shell spacy

通过PHP执行new_api.py时,出现了spacy导入错误。通过cmd运行时,python脚本成功执行了

PHP代码

<?php
$json = file_get_contents('php://input');
$input = json_decode($json, TRUE);
$result = shell_exec('/usr/bin/python3 new_api.py "'.$input['queryResult']['queryText'].'" "'.$input['session'].'" 2>&1');
$output = json_encode(array(
            "source" => "source",
            "fulfillmentText" => $result
            ));
print_r($output);
?>

Python代码段

import requests
import json
import sqlite3
import spacy
import sys

json_values = sys.argv[1:]
result = (home(json_values[0],json_values[1]))
print(result)

输出/错误回溯

  

{“ source”:“ source”,“ fulfillmentText”:“ Traceback(最近一次调用最近):\ n File \” new_api.py \“,第4行,\ n import spacy \ nImportError:未命名模块'spacy'\ n“}

服务器中有两个版本的python。这两个版本均已安装spacy,并且python脚本与两个版本均兼容。

我尝试过的事情

  • 在php中使用exec()shell_exec()进行了尝试
  • 尝试使用which python路径执行脚本
  • 尝试运行同时pythonpython3

    的脚本

    即使尝试了上述步骤的组合,ImportError仍然仍然存在。任何帮助将不胜感激。

  • 1 个答案:

    答案 0 :(得分:0)

    执行PHP脚本的服务器用户可能没有足够的权限来访问模块。

    您可以以服务器用户身份安装模块或使用venv