我写了一个 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/