A dateutil error has appeared, due to updates? How to fix?
Peter Otten
__peter__ at web.de
Sun Sep 23 07:38:15 EDT 2012
tinnews at isbd.co.uk wrote:
> I have a python script which uses the dateutil module with the
> following:-
>
> import sys
> import datetime
> import icalendar
> from dateutil.relativedelta import relativedelta
>
> The section of code which uses relativedelta is as follows:-
>
> #
> #
> # If the event is a repeating event with a start date in the
> # past then we add the repeat interval until we find the next
> # occurrence
> #
> if eventDate < datetime.date.today():
> if event.has_key('RRULE'):
> freq = event.decoded('RRULE')['FREQ'][0]
> if event.decoded('RRULE').has_key('INTERVAL'):
> interval = event.decoded('RRULE')['INTERVAL'][0]
> else:
> interval = 1;
> if 'WEEKLY' == freq:
> delta = relativedelta(weeks=+interval)
> if 'MONTHLY' == freq:
> delta = relativedelta(months=+interval)
> if 'YEARLY' == freq:
> delta = relativedelta(years=+interval)
> while eventDate < datetime.date.today():
> eventDate += delta
> else:
> continue # if it's a non-repeating event in the
> past
>
>
> It used to work and all I have done meanwhile is to update my xubuntu
> system as fixes are released. I'm now getting the error:-
>
> Traceback (most recent call last):
> File "/home/chris/bin/calics.py", line 62, in <module>
> eventDate += delta
> File "/usr/lib/python2.7/dist-packages/dateutil/relativedelta.py",
> line 261, in __radd__
> day = min(calendar.monthrange(year, month)[1],
> AttributeError: 'module' object has no attribute 'monthrange'
>
> Have I lost a module somewhere in the updates or has something in
> python changed such that my code no longer works as it used to?
>
> Can anyone help diagnose this please.
You probably have a file named calendar.py in your working directory:
$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
/usr/lib/python2.7/calendar.pyc
$ touch calendar.py
$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
calendar.py
Rename calendar.py in your working directory (and don't forget to delete the
corresponding calendar.pyc) -- and dateutil should work again.
More information about the Python-list
mailing list