我正在尝试在python脚本中使用pytz,以用作hadoop流式传输作业的映射器。
根据另一个帖子的建议,我尝试将pytz打包为zip' pytz.mod',然后用zipimport加载:
import zipimport
importer = zipimport.zipimporter('pytz.mod')
pytz = importer.load_module('pytz')
from pytz import timezone
user_timezone = timezone('America/Moncton')
这会出现以下错误:
Traceback (most recent call last):
File "./load-pytz.py", line 15, in <module>
user_timezone = timezone('America/Moncton')
File "./lib/python2.6/site-packages/pytz/__init__.py", line 180, in timezone
pytz.exceptions.UnknownTimeZoneError: 'America/Moncton'
我找到了this thread,问题似乎是zipimport无法在zoneinfo目录中加载二进制文件。我试图按照线程中的说明操作,但无法让它们工作。是否有一个更简单的机制来包装zoneinfo,而不通过py2exe?
我需要做的就是相对于时区本地化UTC时间戳,例如,&#39; America / Moncton&#39;。
谢谢!
答案 0 :(得分:2)
你试过tzlocal吗?从我读到的Here开始,pytz会出现一个未知的时区错误,原因有几个。 - 如果你没有给它一个时区名称,或者你提供的时区名称(取决于你的操作系统)与pytz使用的时区名称不同。使用tzlocal检索本地时区作为tzinfo对象,正常使用pytz,可以让你继续你的项目。
如上面的链接所示,您可以通过
执行此操作from tzlocal import get_localzone
tz = get_localzone()
我不是自称是专家,只是做我自己的一些研究,试图帮助一个有需要的人。希望这会对你有所帮助。