2015-04-23 50 views
2

我想在python腳本中使用pytz,以用作hadoop流式作業的映射器。pytz.exceptions.UnknownTimeZone在Python中使用zipimport加載pytz時出現錯誤

繼在另一個線程的建議,我想包裝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時間戳相對於時區,例如'America/Moncton'。

謝謝!

回答

1

您是否嘗試過tzlocal?根據我讀的Here,pytz會給出一個未知的時區錯誤,原因有幾個。 - 如果你不給它一個時區名稱,或者你給它的時區名稱,取決於你的操作系統,它與pytz使用的時區名稱不同。使用tzlocal將當地時區作爲tzinfo對象進行檢索,與普通pytz一起使用時,應讓您繼續執行項目。

正如我上面放置了鏈接顯示,您可以通過

from tzlocal import get_localzone 
tz = get_localzone() 

我不要求這樣做是一個專家,只是在做我自己的一些研究,試圖幫助了研究員需要。希望這可以幫助你。

+0

tzlocal是偉大的,但我不知道它與問的問題有什麼關係。 –

+0

我的理解是,操作無法獲得pytz會識別的時區,從而導致他的問題,如果我不正確,請原諒這個錯誤是在他們沒有收到當地時區的範圍內。 – Colabambino

+0

它看起來像OP已經知道要使用什麼時區。 –

相關問題