【问题标题】:Python module exists in terminal but not when run through PHP's shell_execPython 模块存在于终端中,但在通过 PHP 的 shell_exec 运行时不存在
【发布时间】:2018-06-16 11:38:44
【问题描述】:

当我在终端中运行 python 脚本时,它工作得很好。 然后,我继续通过 PHP 的 shell_exec 从 localhost 运行完全相同的脚本。

shell_exec("python /Applications/MAMP/htdocs/pharm/Webmaps.py")

它给出的错误是:

Traceback (most recent call last): File "/Applications/MAMP/htdocs/pharm/Webmaps.py", line 1, in import folium ImportError: No module named folium

它无法识别已安装的模块。不用说,它在 localhost 上的 Windows 上工作得很好。

【问题讨论】:

  • 您的python-packages 目录在工作环境和非工作环境之间会发生变化吗?
  • 将终端中的 python -c "import site;print(site.getsitepackages())"shell_exec('python -c "import site;print(site.getsitepackages())"') 进行比较

标签: php python macos localhost


【解决方案1】:

如果您的机器上有多个版本的 Python,这可能不起作用。基本上我认为正在发生的事情是,当您使用 shell_exec 时调用的 Python 版本与您知道安装了 folium 的版本不同。尝试创建如下文件:

# test.py
import sys
print(sys.version_info)

并使用shell_exec("python /path/to/test.py")。然后尝试python /path/to/test.py。我希望它会有所不同。即使没有什么不同,它仍然可能意味着您有两个或多个完全相同版本的 Python 安装(不太可能,但可能)。您可以运行以下命令进行检查。尝试shell_exec("which python")which python。我敢猜测,这应该会给你足够的信息来解决这个问题。

【讨论】:

    【解决方案2】:

    如果您使用sudo pip install xxxxx 安装软件包,那么它将保存在/usr/lib/pythonX.X/dist-packages 下。 如果您省略sudo,它将保存在用户的主目录下,并且很可能无法通过 php 引擎访问。 所以尝试安装包添加sudo 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 2018-12-19
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多