我有一个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中所有的绘图功能。
没有完整的答案,但也许有帮助:
假设你在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)做。
感谢扬库伊肯的尝试吧! 最后经过艰苦的奋斗,我能够弄明白。 首先在提出这个页面 ,添加以下为“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的是在这种情况下,需要的!
当python脚本通过PHP执行没有得到执行的matplotlib部分。 然后我就包括我的.py文件下面的语句..
import os
os.environ[ 'MPLCONFIGDIR' ] = '/tmp/'
import matplotlib
matplotlib.use('agg')
和它的工作...