我有一个PHP脚本,该脚本通过
$call_python = "python ../python/lp_3.py ".$author; $python_output = Null; $mystring = exec($call_python, $output_python);
这在日志中产生了一个错误:
$ vi logs/error_log shows .... Traceback (most recent call last): File "../python/lp_3.py", line 14, in <module> import MySQLdb ImportError: No module named MySQLdb
如果我python python/lp_3.py在航站楼里做,一切都很好。我想念什么?
python python/lp_3.py
@的建议后,美国洛特我看看变量PATH和PYTHONPATH无论是在终端和PHP。
PATH
PYTHONPATH
在终端中:
$ echo $PYTHONPATH $ echo $PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin
如您所见,PYTHONPATH是空的。
在PHP中:
echo getenv("PYTHONPATH"); // NOTHING echo getenv("PATH"); // /usr/bin:/bin:/usr/sbin:/sbin
也许我应该提到,我的python脚本中的前两行是
#!/usr/bin/env python # encoding: utf-8
我愿意征求意见。=)
我检查了Mac上每个已安装的python版本。我发现,python2.7没有安装MySQLdb。有没有一种方法告诉PHP 不要 使用python2.7而是使用例如python2.6?我setenv()尝试在PHP中玩弄,但是我不知道如何正确使用它,我什至不知道这是否是正确的方法。
setenv()
在您的PHP代码中,您只是调用“ python”,然后让PHP决定使用哪个版本的Python。使用到特定Python二进制文件的显式路径(例如/usr/bin/python2.6)。
您需要知道安装MySQLdb的Python版本的确切路径。