从 PHP 运行 python 脚本时不导入 Python 模块

我有一个 Python 脚本,当我在终端中运行它时运行良好。这里是:


import bs4, requests, json, sys

from sys import argv


def getFsmonData(link):

    res = requests.get(link)

    res.raise_for_status()

    soup = bs4.BeautifulSoup(res.text)


    # Get table data

    tds = soup.select('td')

    new_td_list = []

    for i in range(len(tds)):

        inner_td_list = []

        for y in range(len(tds)):

            inner_td_list.append(tds[y].getText())

        new_td_list.append(inner_td_list)

    print(inner_td_list)

    td_list_json = json.dumps(inner_td_list)

    tdf = open("/path/to/file/data/td_data.txt", "w")

    tdf.write(td_list_json)

    tdf.close()


getFsmonData(sys.argv[1])

但现在我试图从 PHP 运行它,但出现以下错误:


回溯(最近一次调用):文件“/path/to/file/example.py”,第 1 行,在 import bs4、requests、json、sys ModuleNotFoundError: No module named 'bs4'


我猜 PHP 认为我没有安装这个模块,但我当然不确定。这是我的PHP代码:


<?php

    $link = $_POST['dn-link'];


    if (isset($_POST['submit'])) {

        system('/usr/bin/python3 /path/to/file/example.py ' . escapeshellarg($link) . ' 2>&1', $retval);

    }

?>

谁能帮忙解决这个问题?


墨色风雨
浏览 95回答 2
2回答

互换的青春

最有可能的是,当您的 PHP 脚本执行您的 Python 脚本时,它以不同的用户(可能是超级用户)身份执行它。您可以做的是通过执行以下操作检查软件包是否安装在超级用户下sudo&nbsp;pip&nbsp;list或者如果您使用的是 python3sudo&nbsp;pip3&nbsp;list查看此命令中是否列出了您要使用的软件包。如果它们未列出,您可以通过以下命令轻松安装它们:sudo&nbsp;pip&nbsp;install&nbsp;<pkg&nbsp;name>或者sudo&nbsp;pip3&nbsp;install&nbsp;<pkg&nbsp;name>您在这里所做的是在超级用户而不是本地用户下安装软件包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python