为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

墨色风雨 2021-06-08 15:57:14
我有一个 Python 脚本,当我在终端中运行它时运行良好。这里是:import bs4, requests, json, sysfrom sys import argvdef 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);    }?>谁能帮忙解决这个问题?
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

最有可能的是,当您的 PHP 脚本执行您的 Python 脚本时,它以不同的用户(可能是超级用户)身份执行它。您可以做的是通过执行以下操作检查软件包是否安装在超级用户下

sudo pip list

或者如果您使用的是 python3

sudo pip3 list

查看此命令中是否列出了您要使用的软件包。

如果它们未列出,您可以通过以下命令轻松安装它们:

sudo pip install <pkg name>

或者

sudo pip3 install <pkg name>

您在这里所做的是在超级用户而不是本地用户下安装软件包。


查看完整回答
反对 回复 2021-06-15
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信