pytz.exceptions.unknowntimezoneerror在python中使用zipimport加载pytz时

g2ieeal7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(497)

我正在尝试在python脚本中使用pytz,作为hadoop流作业的Map器。
按照另一个线程中的建议,我尝试将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'

我发现了这个线程,问题似乎是zipimport无法加载zoneinfo目录中的二进制文件。我试着按照线程中的说明去做,但没能让它们工作。有没有更简单的机制来打包zoneinfo,而不必经过py2exe?
我所需要做的就是将utc时间戳相对于时区进行本地化,例如“america/moncton”。
谢谢您!

ubby3x7f

ubby3x7f1#

你试过吗?根据我在这里读到的,pytz会给出一个未知的时区错误,原因有几个。-如果你没有给它一个时区名称,或者如果你给它的时区名称,取决于你的操作系统,是不是与pytz使用的时区名称相同。使用tzlocal作为tzinfo对象检索本地时区,将pytz作为普通对象使用,应该可以让您继续您的项目。
如我在上面放置的链接所示,您可以通过

from tzlocal import get_localzone
 tz = get_localzone()

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

相关问题