php - Python脚本通过PHP执行时找不到模块,但通过CLI运行时可以找到它
问题描述
当我尝试通过我的 PHP 前端运行 python 脚本时遇到问题,我尝试了以下两种方法:
$command = "(python3 /my/script.py --params) 2>&1";
$output = shell_exec($command);
和
ob_start();
passthru($command);
$output = ob_get_clean();
两者都返回:
Traceback (most recent call last): File "/my/script.py", line 14, in from woocommerce import API ModuleNotFoundError: No module named 'woocommerce'
通过 CLI 运行时,脚本运行良好,但通过 PHP 运行时会抛出上述问题。这是有问题的行给我的问题。不知道为什么它可以在一个实例而不是另一个实例中找到该模块。
from woocommerce import API
from wordpress_json import WordpressJsonWrapper
解决方案
看起来您的woocommerce
模块未正确安装在系统中。在 CLI 中运行脚本时可以找到它,但是当控制您的 PHP 实例的系统用户启动脚本时,该woocommerce
模块不存在。这表明该模块仅为您的普通 CLI 用户安装,而不是在系统中全局安装。
直接的解决方案是全局安装该woocommerce
模块,以便其他用户(包括运行PHP的系统用户)可以找到它。
推荐阅读
- c# - 如何从我的 ASP.NET Core 应用程序访问来自 Azure Active Directory 的其他数据?
- azure-bot-service - 在 Azure 上手动部署机器人
- testing - 需要在 .yalm 文件中带上实际日期
- php - 你如何在 PHP/laravel 中创建一个流/动作序列?(结账支付系统)
- javascript - 在 javascript 和 jquery 中使用 <- 和 -> 键进行分页
- css - 将面包屑固定到标题
- php - 需要高性能的方式来将逗号添加到 5 位数字的年份
- python - 从具有另一个值范围的列表中提取值以创建字典
- django - 具有多个连接的数据库模型的方法
- authentication - 一旦应用程序已安装在商店中,如何在 BigCommerce 中获取授权代码以生成访问令牌