python python-2.7 attributeerror python-dateutil

python - AttributeError cuando se usa "import dateutil" y "dateutil.parser.parse()" pero no hay problemas cuando se usa "desde el analizador de importaciĆ³n de dateutil"



python-2.7 python-dateutil (1)

Estaba jugando con el módulo dateutil en Python 2.7.3. Simplemente quería usar:

import dateutil dateutil.parser.parse("01-02-2013")

Pero tengo un error:

AttributeError: ''module'' object has no attribute ''parser''

Comprobé qué atributos tiene dateutil :

print dir(dateutil) # output: [''__author__'', ''__builtins__'', ''__doc__'', ''__file__'', ''__license__'', # ''__name__'', ''__package__'', ''__path__'', ''__version__'']

El caso es que cuando intento importar el parser directamente de dateutil , parece existir:

from dateutil import parser print parser.parse("01-02-2013") # output: 2013-01-02 00:00:00

Después del from dateutil import parser , el parser también apareció mágicamente en el dateutil importado:

print dir(dateutil) # output: [''__author__'', ''__builtins__'', ''__doc__'', ''__file__'', ''__license__'', # ''__name__'', ''__package__'', ''__path__'', ''__version__'', ''parser'', # ''relativedelta'', ''tz'']

Tenga en cuenta que aún faltan algunos otros atributos (como rrule ) de esta lista.

¿Alguien sabe lo que está pasando?


No ha importado dateutil.parser . Puedes verlo, pero de alguna manera debes importarlo.

>>> import dateutil.parser >>> dateutil.parser.parse("01-02-2013") datetime.datetime(2013, 1, 2, 0, 0)

Eso es porque el parser.py es un módulo en el paquete dateutil . Es un archivo separado en la estructura de la carpeta.

Responda a la pregunta que hizo en los comentarios, la razón por la cual relativedelta y tz aparecen en el espacio de nombres después from dateutil import parser es porque el mismo parser importa relativedelta y tz .

Si observa el código fuente de dateutil/parser.py , puede ver las importaciones.

# -*- coding:iso-8859-1 -*- """ Copyright (c) 2003-2007 Gustavo Niemeyer <[email protected]> This module offers extensions to the standard Python datetime module. """ ... snip ... from . import relativedelta from . import tz