Jak poprawnie dodać PyTZ do aplikacji Google App Engine?
To trochę żenujące, ale nie udało mi się znaleźć dobrych zasobów na ten temat.
Pracuję nad aplikacją Google App Engine, która wymaga zaawansowanych konwersji stref czasowych. Ponieważ nie jestem w pobliżu narzuconych kwot, zdecydowałem się na PyTZ. Muszę jednak zrobić coś złego. Do tej pory zrobiłem:
Pobrano PyTZ jako tarballZainstalowałem go i skopiowałempytz
katalog do katalogu głównego mojej aplikacji (jest rodzeństwemwebapp
katalog, gdzieapp.yaml
jest usytuowany).Jeśli jednak spróbuję utworzyć wystąpienie stref czasowych, PyTZ nigdy nie znajdzie żadnego. Oto przykładowa sesja z interaktywnej konsoli GAE:
from pytz import timezone
rome = timezone('Europe/Rome')
Dane wyjściowe są następujące:
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/admin/__init__.py", line 210, in post
exec(compiled_code, globals())
File "<string>", line 3, in <module>
File "/Library/Python/2.5/site-packages/pytz-2009j-py2.5.egg/pytz/__init__.py", line 157, in timezone
UnknownTimeZoneError: 'Europe/Rome'
Co robię źle? Z góry dziękuję za pomoc.
UWAGA: Jeśli użyję lokalnej powłoki interaktywnej Pythona, rzeczy działają zgodnie z oczekiwaniami:
>>> from pytz import datetime, timezone
>>> rome = timezone('Europe/Rome')
>>> rome.localize(datetime.datetime.now())
datetime.datetime(2009, 11, 12, 0, 4, 52, 990114, tzinfo=<DstTzInfo 'Europe/Rome' CET+1:00:00 STD>)
Edytować: Muszę wyjaśnić, że nie używam spakowanej wersji PyTZ. Uwzględniłem całośćzoneinfo
katalog w moim projekcie:
pc-morena:pytz lyudmilangelov$ cd zoneinfo/
pc-morena:zoneinfo lyudmilangelov$ ls -l
total 448
drwxr-xr-x@ 55 lyudmilangelov staff 1870 Nov 10 12:48 Africa
drwxr-xr-x@ 135 lyudmilangelov staff 4590 Nov 10 12:48 America
drwxr-xr-x@ 12 lyudmilangelov staff 408 Nov 10 12:48 Antarctica
drwxr-xr-x@ 3 lyudmilangelov staff 102 Nov 10 12:48 Arctic
drwxr-xr-x@ 93 lyudmilangelov staff 3162 Nov 10 12:48 Asia
...