加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

通过终端和PHP调用python脚本之间的区别?错误在哪里?

发布时间:2020-12-13 17:07:15 所属栏目:PHP教程 来源:网络整理
导读:我有一个 PHP脚本,它调用python脚本 $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):
我有一个 PHP脚本,它调用python脚本

$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一切都很好.我错过了什么?

编辑:

在@ S.Lott的建议之后,我在终端和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

我愿意接受建议. =)

EDIT2:

我在我的mac上检查了每个已安装的python版本.我发现,python2.7没有安装MySQLdb.有没有办法告诉PHP不要使用python2.7并使用例如python2.6而不是?我尝试在PHP中使用setenv(),但我无法弄清楚如何正确使用它,我甚至不知道这是否是正确的方法.

解决方法

在您的PHP代码中,您只需调用“python”,并让PHP决定使用哪个版本的Python.使用特定Python二进制文件的显式路径(例如/usr/bin/python2.6).

您需要知道安装了MySQLdb的Python版本的确切路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读