在 WSL2 Ubuntu 中使用 Laravel 运行 Python 会导致“找不到模块”

Posted

技术标签:

【中文标题】在 WSL2 Ubuntu 中使用 Laravel 运行 Python 会导致“找不到模块”【英文标题】:Running Python using Laravel inside WSL2 Ubuntu causes "modules not found" 【发布时间】:2021-03-21 16:36:59 【问题描述】:

我有一个 WSL2 Ubuntu 设置了运行 python 脚本所需的一切。

我也在使用一个 Laravel 应用程序,它使用 Symfony/Process 来运行所说的 python 脚本。

但是当我使用 Laravel 应用程序运行脚本时,它告诉我没有安装该脚本所需的模块。

我验证它已安装在我的 Ubuntu 系统中,甚至使用 CLI 运行脚本。

这是我在 Laravel 控制器中用于我的流程的内容

$process = new Process(['/bin/python3', base_path() . /resources/python/pythonscript.py']

这就是我用于 CLI 命令的内容

/bin/python3 /var/www/laravel/resources/python/pythonscript.py

(我也可以只使用 python3,但我想确保使用 /bin/python3 有效。)

重申一下,CLI 运行良好,而 Laravel 控制器为我提供了一个

ModuleNotFoundError: 没有名为“sklearn”的模块

有什么建议吗?

【问题讨论】:

你试过直接php函数吗?例如shell_exec 没有。 Symfony/Process 在使用 Laravel App 方面应该是更好的 shell_exec 版本。 【参考方案1】:

问题是 www-data 组无权访问我安装模块的位置。在我的默认 $user 中。

要解决这个问题,我必须使用 sudo 安装模块。

e.x sudo pip3 install yfinance

不确定这是否是一个好的解决方案,但它是一个适合我的解决方案。

【讨论】:

以上是关于在 WSL2 Ubuntu 中使用 Laravel 运行 Python 会导致“找不到模块”的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 WSL2 上 Ubuntu 20.04 中打开文件的限制?

在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 无法正常工作

wsl2+ubuntu18环境部署zabbix问题记录

在Windows 10中启动WSL2 并安装Linux( Ubuntu 为例)并运行docker

Jupyter Notebook 无法在 Ubuntu WSL2 中打开

Win20H1使用Ubuntu and Docker for wsl2