我试图在内部网络上运行Raspberry Pi上的基本报告工具。为此,我使用:
基本上,我有一个Flask视图,从SQLite表中提取一些日常总计(日期,访问次数,视频播放等),然后通过NumPy按日期聚合数据,将其转换为元组,然后踢它到HTML模板。在HTML模板中,我有一个Jinja过滤器,可以将日期转换为更友好的格式,然后将任何数字转换为逗号分隔格式,以便于阅读。
在我的临时搭历环境(我自己的笔记本电脑-OSX 10.9.5)上完美地工作。但是在Raspberry Pi上运行它 - 通过ssh远程或直接从Pi-Jinja2运行它突然忘记了如何处理数字。在暂存时,Jinja2将numpy.int64类型作为数字处理。在Raspberry Pi上,它表现得像是一种未知格式。
这是我用来将pandas数组转换为元组的代码:
data_set = [tuple(x) for x in grand_total.to_records(index = False)]
这是我用来处理日期的Jinja模板过滤器。我添加了一个额外的elif来将numpy.int64转换为int,但它仍然没有用。
@app.template_filter('DateFormattr')
def DateFormattr(PossDate):
if(isinstance(PossDate, numpy.datetime64)):
PossDate = pandas.to_datetime(PossDate)
PossDate.date().strftime('%Y-%m-%d')
PossDate = str(PossDate)[0:10]
return PossDate
else:
return PossDate
以下是构建实际表格的代码:
{% for row in the_data %}
<tr>
{% for cell in row %}
<td>
{% if cell is not number %}
<b>
{{ cell | DateFormattr }}
</b>
{% else %}
{% print '{0:,}'.format(cell | int) %}
{% endif %}
</td>
这里发生了什么? Raspberry Pi上是否存在使得Flask或Jinja2引擎变得混乱的怪癖?
有很多事情发生,我可能错过了一些细节,所以请随时要求更多澄清。
已编辑添加相关包:
在RPi上:
在Mac上:
两者都在运行Python v2.7.9。 (总有一天,我会不再担心并学会爱上Python 3。)
IIRC,由于RPi的限制,我不得不使用apt-get来安装Pandas,因此版本存在差异。