php - 当 php 使用 shell_exec() 执行脚本时,Python 'No module named ...'

标签 php python linux shell

我写了一个 python 脚本来导入我用 pip 安装的特定模块。

当我在像 python test.py 这样的终端上运行这个脚本时,一切正常,当我运行 help("modules") 时,我可以在列表中看到我的模块(所以他装好了)

问题是我尝试使用 shell_exec("python test.py") 使用 php 脚本运行此脚本,但随后我收到 python 不知道此模块的错误:

ImportError: No module named ...

你知道我的错误是什么或者我该如何解决这个问题吗?


> 编辑 1 :

所以我成为了 @LucasMeine 告诉我的 apache 用户,首先我发现使用的 python 版本不正确。因此,我为好的别名创建了一个别名,然后我在终端中使用 help("modules") 与 apache 用户和正确的 python 版本核实了该模块是否存在。该模块在给定列表中,所以我不明白为什么在我的 apache 错误日志中我收到消息:

ImportError: No module named ...

最佳答案

当调用 shell_exec("python test.py") 时,您依赖于将 python 命令扩展到完全限定路径的 shell 设置。显然,如果您的帐户设置之间存在差异,您可能会调用不同版本的 Python,安装不同的模块。为了规避这种依赖性,您可以尝试使用完整路径指定要运行的 Python 的确切版本,例如

shell_exec("/usr/bin/python3.5 test.py") 

要获取 Python 安装路径,您可以在终端中运行 which python

作为另一种解决方案,您可以修复运行 Web 服务器的帐户的 shell 设置以匹配您当前用户的设置。

干杯!

关于php - 当 php 使用 shell_exec() 执行脚本时,Python 'No module named ...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58627223/

相关文章:

PHP:命名空间类、类加载和异常导致奇怪的行为

python - 如何在theano上实现加权二进制交叉熵?

python - 基于单列 reshape Pandas 数据框

python - 如何处理 Docker 内的 FFMPEG 模块缺少探针?

php - 对齐错误 - HTML 表格

php - 提交时发生两件事

linux - 一般在 Linux 中创建菜单项

ruby - 如何在 ruby​​ 中搜索文件并在匹配后插入字符串?

php - 如何选择一列中文本较长的行

linux - 如何在 linux-32 上将 Cartopy 安装到 python-3.5