导入numpy时从php调用python失败

2024-09-29 21:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

当Android发出一个gethttp请求时,尝试从php调用python(2.6)脚本,但是如果import numpy在我的脚本中,我会遇到一个失败,如果我删除它,脚本/调用会起作用。我在MySQL中计算一个数值域的FFT频谱,所以我需要numpy(或者我需要吗?)。在

我也看过类似的问题,其中this一个由@dietrich epp回答的问题是最好的,但是当我尝试同样的建议时,我的脚本仍然失败了。在

以下是python脚本的导入部分:

import  os, os.path, sys
import numpy
import string
import math
import MySQLdb

以及我的PHP文件的开头:

^{pr2}$

我这样称呼我的python脚本:

$command = "/var/www/html/tremcam/tst0.py localhost baseline@nd.edu 2>&1";
$pid = popen( $command,"r");
while( !feof( $pid ) )
{
 #echo fread($pid, 256);
 print(json_encode(fread($pid, 256)));
 flush();
 ob_flush();
 usleep(100000);
}
pclose($pid);

我的环境变量将PYTHONPATH设置为:

/var/www/html/tremcam/pythons
/usr/lib/python2.6/site-packages
/usr/lib
/usr/lib/python26.zip
/usr/lib/python2.6
/usr/lib/python2.6/plat-linux2
/usr/lib/python2.6/lib-tk
/usr/lib/python2.6/lib-old
/usr/lib/python2.6/lib-dynload
/usr/lib/python2.6/site-packages/gtk-2.0
/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info
/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info

这个(PYTHONPATH=/usr/lib/python2.6/site-packages)应该指向/usr/lib/python2.6/site-packages/numpy吗?在

我将尝试使用passthru()而不是目前在PHP中使用的方式。请注意,当我能够将numpy作为np导入后,代码将需要几秒钟才能完成,这是否也是一个问题?在

更新:如果我使用:passthru('/var/www/html/tremcam/tst0.py localhost baseline@nd.edu 2>&1',$result);

我的出口状态码是139,所以这对我没什么帮助,你觉得呢?在


Tags: importnumpy脚本osvarlibpackagesusr
1条回答
网友
1楼 · 发布于 2024-09-29 21:23:48

试试看 setsebool httpd_tmp_exec on 如果能用,那就用 setsebool -P httpd_tmp_exec on

它应该是SELinux拒绝Apache您的pytonpath目录(是的,如果它仍然不起作用,您应该提供非常numpy的文件夹,但它不应该是必需的)。在

一种稍微不那么干净的方法是在/<your numpy path>/numpy/__init__.py中注释这一行import ctypeslib

我也遇到了同样的问题,两种方法都很好(后者可能会导致以后的开发出现一些不一致的情况,因此我建议您先尝试setsebool)

相关问题 更多 >

    热门问题