php - 调用Python脚本*使用从php导入的非标准库*

标签 php python error-handling

我搜索了所有相关问题,有很多类似的问题,但我的问题是

如何从 php 调用一个 python 脚本,我在其中导入了一些非标准库/模块

更具体地说,我有一个 .py 文件 test.py,我在其中导入了 pycurl 和 Bottlenose,这是一个亚马逊 API 包装器。这两个模块都不在标准库中。所以文件看起来像

import pycurl
import bottlenose
...
print "hello!"

然后我制作了一个php文件,test.php

<?
$output = array();
exec("/home/my_user_name/local/Python-2.7/bin/python test.py", $output, $ret_code);
var_dump( $output);
echo $ret_code;
?>

test.php 和 test.py 都在同一目录下。更重要的是,如果我运行

php test.php 

在我的终端中,没有任何问题。成功输出“hello”,返回码为0,表示程序正常退出

但是,当我在我的浏览器 www.someurl.com/test.php 上测试它时,出现了一些错误。我逐行跟踪,发现错误发生在“import pycurl”和“import Bottlenose”处。

我还尝试打印出 sys.path,它确实包含了 Bottlenose 的路径。

有人可以帮忙吗?

谢谢!!

最佳答案

如果您在调用 Python 程序之前在 php 脚本中调用 putenv,我会相信 sys.path 是正确的。

成功运行后,趁机打印 sys.path。我们将此打印的结果称为“x”。然后,尝试以下操作:

putenv('PYTHONPATH=x');
exec("/home/my_user_name/local/Python-2.7/bin/python test.py", $output, $ret_code);

这有帮助吗?

关于php - 调用Python脚本*使用从php导入的非标准库*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617715/

相关文章:

python - 使用python在html源代码中查找图像

javascript - ajax 调用忽略了我的 if 语句

python - 结构错误 : Fatal error: local() encountered an error (return code 2) while executing 'git commit -m ' message'

python - 无法使用自定义小部件更改可检查 QListViewItem 的状态

javascript - Javascript 的正则表达式不正确

ruby-on-rails - 使用 Rails 和 Postgres 时如何访问数据库错误信息

php - 将不适当的操作分配给表单元素

javascript - JSON 和 Highcharts

PHP - push_to_array 函数

r - 记录错误消息并将其写入数据框