在Python中使用zipimport加载pytz时出现pytz.exceptions.UnknownTimeZoneError

时间:2015-04-23 20:45:39

标签: python hadoop timezone pytz

我正在尝试在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;。

谢谢!

1 个答案:

答案 0 :(得分:2)

你试过tzlocal吗?从我读到的Here开始,pytz会出现一个未知的时区错误,原因有几个。 - 如果你没有给它一个时区名称,或者你提供的时区名称(取决于你的操作系统)与pytz使用的时区名称不同。使用tzlocal检索本地时区作为tzinfo对象,正常使用pytz,可以让你继续你的项目。

如上面的链接所示,您可以通过

执行此操作
from tzlocal import get_localzone
 tz = get_localzone()

我不是自称是专家,只是做我自己的一些研究,试图帮助一个有需要的人。希望这会对你有所帮助。