我搜索了所有相关问题,有很多类似的问题,但我的问题是
如何从 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/