2015-04-23 3 views
2

Я пытаюсь использовать pytz в скрипте python, который будет использоваться в качестве сопоставителя для работы потоковой передачи hadoop.pytz.exceptions.UnknownTimeZoneError при загрузке pytz с zipimport в Python

Следуя совету в другой теме, я попытался упаковки pytz как почтовый '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' 

I найдено this thread, и проблема заключается в том, что zipimport не может загружать двоичные файлы в каталог zoneinfo. Я пытался следовать инструкциям в потоке, но не мог заставить их работать. Есть ли более простой механизм для упаковки zoneinfo, без прохождения py2exe?

Все, что мне нужно сделать, это локализовать отметку времени UTC относительно часового пояса, например, «Америка/Монктон».

Спасибо!

ответ

1

Вы пробовали tzlocal? Из того, что я прочитал Here, pytz даст неизвестную ошибку часового пояса по нескольким причинам. - Если вы не дадите ему имя часового пояса, или если имя часового пояса, которое вы ему даете, в зависимости от вашей операционной системы, не будет таким же, как и имена часовых поясов, которые использует pytz. Используя tzlocal для извлечения локального часового пояса в качестве объекта tzinfo, чтобы использовать его с pytz как обычно, вы должны продолжить свой проект.

Как показано в ссылке я поместил выше, вы можете сделать это

from tzlocal import get_localzone 
tz = get_localzone() 

Я не претендую быть экспертом, просто делать некоторые исследования моей, чтобы попытаться помочь собрата в необходимость. Надеюсь, это вам поможет.

+0

tzlocal отлично, но я не уверен, что он имеет отношение к заданному вопросу. –

+0

Мое понимание было то, что op не смог получить часовой пояс, который pytz узнал бы и, таким образом, вызвал бы у него проблемы, извините, если im неверно, я предположил, что ошибка была в том, что они не получили локальный часовой пояс. – Colabambino

+0

Похоже, что ОП уже знает, какой часовой пояс использовать. –