如何在GAE中使用pytz模块
pytz是一个关于时区问题的Python工具包. 那么如何在GAE上使用呢? 如果你想把pytz打成zip包然后调用,那么此文可能值得你看看.
1)下载最新版本: pytz-2009r.zip 找出子目录pytz ,再将pytz中的tests目录删除,然后将 *.pyc文件全部删除 . 最后将pytz目录压缩成 pytz.zip .至于为何要压缩,GAE用户自然明白是何道理.
2)在GAE中使用时先导入:
import sys
sys.path.insert(0, 'pytz.zip')
3)然后(这是关键点), 将pytz模块中的函数open_resource置换掉,因为在GAE平台中,在压缩包中执行open_resource这个代码会报错. 置换的方法是:
import pytz
from zipfile import ZipFile
from cStringIO import StringIO
def open_resource(name):
name_parts = name.lstrip('/').split('/')
for part in name_parts:
if part == os.path.pardir or os.path.sep in part:
raise ValueError('Bad path segment: %r' % part)
zonedata = ZipFile('pytz.zip').read('pytz/'+os.path.join('zoneinfo',*name_parts))
return StringIO(zonedata)
pytz.open_resource = open_resource
4)最后你就可以参考pytz官方文档使用了.
补充:
为了方便, 可以下载pytz在GAE中zip加载方式的补丁代码. http://ghscheck.chaoskey.cn/pytzpatch.py
使用方法:
1) pytz.zip 和 其补丁代码pytzpatch.py ,都建议放在 项目根目录.
2) 调用代码示例:
import sys
sys.path.insert(0, 'pytz.zip')
from datetime import datetime
import pytz
import pytzpatch
cntz = pytz.timezone('Asia/Shanghai')
print datetime.now(cntz).strftime('%Y-%m-%d %H:%M:%S')







