Python模块存在于终端中,但在通过PHP的shell_exec运行时不存在

时间:2018-01-07 04:15:33

标签: php python macos localhost

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

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中运行得很好。

2 个答案:

答案 0 :(得分:0)

如果您的计算机上有多个版本的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。我冒昧地猜测,应该给你足够的信息来解决这个问题。

答案 1 :(得分:0)

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