PHP和导入pylab

我有一个PHP脚本,调用python程序。 这是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中的所有绘图功能。


没有完整答案,但可能有帮助:

假设你在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 import * ImportError:没有名为ma的模块

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


感谢Jan Kuiken试用它! 经过艰苦的斗争,终于找到了答案。 首先如本页所示,我将以下内容添加到'test.py'中,

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

并导入pylab(即,未注释它)。

这从命令行工作,但不在浏览器中。 然后我做了一个passthru,并在浏览器中得到以下错误:

dyld:找不到符号:__cg_jpeg_resync_to_restart引用自:/ System / Library / Frameworks / ApplicationServices ...预计位于:/Applications/MAMP/Library/lib/libjpeg.62.dylib

我发现它应该是ImageMagick的一个问题,并遵循以下页面的建议:获取MAMP 1.9以使用ImageMagick

经过正确的安装后,我能够获得python代码。 python代码有一个命令来绘制和保存图形,我猜ImageMagick在这种情况下是必需的!


当python脚本通过php执行时,matplotlib部分没有被执行。 然后我只在我的.py文件中包含以下语句。

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

import matplotlib

matplotlib.use('agg')

它的工作...

链接地址: http://www.djcxy.com/p/46713.html

上一篇: PHP and Importing pylab

下一篇: How to plot 500 pairs of successive random numbers in python?