PHP和导入pylab(PHP and Importing pylab)

2019-10-29 03:35发布

我有一个Python程序中调用的PHP脚本。 下面是PHP脚本:

<?php
    $last_line = popen('/Library/Frameworks/Python.framework/Versions/Current/bin/python test.py', 'r');
    $results = fgets($last_line);
    print $results;
?>

这是test.py内容:

test.py:

    import numpy as np
    from matplotlib.patches import Ellipse
    # import matplotlib.pyplot as plt
    # from matplotlib.pyplot import figure, show
    # import pylab 

    print "Hello World!"

现在,这工作得很好,我得到的“Hello World!” 在浏览器中。 但是,如果我去掉任何进口(即进口matplotlib.pyplot如PLT,进口matplotlib.pyplot如PLT或进口pylab)我没有得到从PHP的结果。 这将是巨大的,如果有人可以帮助我,因为我需要从Python中所有的绘图功能。

Answer 1:

没有完整的答案,但也许有帮助:

假设你在Mac OS,我已经改变了你的.php文件到:

<br><br>==== Start ====<br><br>

<?php
    error_reporting(E_ALL);

    $handle = popen('python test.py 2>&1', 'r');
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer."<br>";
    }
    pclose($handle);

?>

<br><br>==== End ====<br><br>

.py文件:

import numpy as np
import matplotlib.pyplot as plt

print "Hello World!"

2>&1重定向程序的错误输出到标准输出,这可以有用用于调试目的。

在浏览器页面上的结果包含:

文件“/Library/Python/2.6/site-packages/matplotlib-0.91.1-py2.6-macosx-10.6-universal.egg/matplotlib/ 初始化的.py”,管403在_get_configdir提高RuntimeError(“无法创建%S / .matplotlib;考虑设置MPLCONFIGDIR为matplotlib配置数据“%H)RuntimeError一个可写的目录:无法创建/Library/WebServer/.matplotlib; 考虑MPLCONFIGDIR设置为可写目录matplotlib配置数据

比我的根:

mkdir /Library/WebServer/.matplotlib
chown _www /Library/WebServer/.matplotlib/

而比作为包含最后一个错误的浏览器的页面:

文件“/Library/Python/2.6/site-packages/matplotlib-0.91.1-py2.6-macosx-10.6-universal.egg/matplotlib/numerix/ma/ 初始化的.py”,第16行,从numpy.core .MA进口*导入错误:没有模块马某

嗯,这就是仍然令人失望,但你的里程可能会有所不同,这个问题有可能随着环境/ web服务器用户的权限(_www)做。



Answer 2:

感谢扬库伊肯的尝试吧! 最后经过艰苦的奋斗,我能够弄明白。 首先在提出这个页面 ,添加以下为“test.py”,

import os
os.environ[ 'MPLCONFIGDIR' ] = '/tmp/'
import matplotlib
matplotlib.use('agg')

和进口pylab(即,未注释的话)。

这个工作在命令行而不是在浏览器中。 然后我做了一个中继 ,并得到了在浏览器中出现以下错误:

使dyld:找不到符号:/系统/资源库/框架/ ApplicationServices ...预期:从__cg_jpeg_resync_to_restart引用/Applications/MAMP/Library/lib/libjpeg.62.dylib

:我从以下页面想通了,它应该与ImageMagick的问题,其次建议获得MAMP 1.9与ImageMagick的工作

以及正确安装后,我能得到的Python代码怎么回事。 在Python代码有一个命令绘制并保存这个数字,我想ImageMagick的是在这种情况下,需要的!



Answer 3:

当python脚本通过PHP执行没有得到执行的matplotlib部分。 然后我就包括我的.py文件下面的语句..

import os
os.environ[ 'MPLCONFIGDIR' ] = '/tmp/'

import matplotlib

matplotlib.use('agg')

和它的工作...



文章来源: PHP and Importing pylab