On 6/13/2012 4:55 PM, bri...@gmail.com wrote:
Hi!

I'm trying to get a handle on pytz (http://pytz.sourceforge.net/). I don't have 
root on the system I'll be running my script on, so I need to go for a local 
installation. I copied pytz into a folder in my sys.path and am importing from 
there. That part seems to work. I downloaded the tarball on 
http://pypi.python.org/pypi/pytz/#downloads

So now I'm walking through the examples on 
http://pytz.sourceforge.net/#example-usage. This is what happens:

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on 
win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
from datetime import datetime, timedelta
from pytz import timezone
import pytz
utc = pytz.utc
utc.zone
'UTC'
eastern = timezone('US/Eastern')
Traceback (most recent call last):
   File "<console>", line 1, in<module>
   File "C:\code\SoF\serversonfire\pytz\__init__.py", line 181, in timezone
     _tzinfo_cache[zone] = build_tzinfo(zone, fp)
   File "C:\code\SoF\serversonfire\pytz\tzfile.py", line 30, in build_tzinfo
     typecnt, charcnt) =  unpack(head_fmt, fp.read(head_size))
error: unpack requires a string argument of length 44


Can anyone explain to me why that call fails?

1. Either pytz has a bug, it was not installed correctly, or it does not work on windows.

2. If you read the module struct section of the fine manual, which you can easily find by typing 'unpack' on the Index tab of the Windows help version of the manual, it will tell you the following. Unpack takes two arguments, a format defining character fields of specifics lengths and a string whose length must be the sum of those lengths. (The contents of each field must also match the format spec, but you never got that far.) If there is a length mismatch, you get the message above.

3. In the specific case, we may presume that head_size is the sum of field lengths for head_fmt. (You could check; if not, that is a bug.) Since fp.read cannot read too many bytes, it must have read too little. ("Read up to n bytes from the object and return them.")

You could look in
C:\code\SoF\serversonfire\pytz\__init__.py
and see what file fp is supposed to be and then take a look at the file. Is it empty? Is anything read before the statement that failer?

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to