我有一个 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>
您在这里所做的是在超级用户而不是本地用户下安装软件包。
添加回答
举报
0/150
提交
取消