Re: from datetime.datetime import today not working. python2.6.4on windows

Discussion in 'Python' started by Steve Holden, Jan 7, 2010.

  1. Steve Holden

    Steve Holden Guest

    Joshua Kordani wrote:
    > Greetings all!
    > So I'm reading through the manual and I get to the point where it talks
    > about packages and how to import them. namely section 6.4 in the
    > tutorial. I wont repeat the section here, but I want to understand
    > whats going on in the following (as typed on my computer).
    > Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit
    > (Intel)] on
    > win32
    > Type "help", "copyright", "credits" or "license" for more information.
    >>>> import datetime
    >>>> dir(datetime)

    > ['MAXYEAR', 'MINYEAR', '__doc__', '__name__', '__package__', 'date',
    > 'datetime',
    > 'datetime_CAPI', 'time', 'timedelta', 'tzinfo']
    >>>> dir(datetime.datetime)

    > ['__add__', '__class__', '__delattr__', '__doc__', '__eq__',
    > '__format__', '__ge
    > __', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__',
    > '__lt__', '
    > __ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__',
    > '__repr__', '__rs
    > ub__', '__setattr__', '__sizeof__', '__str__', '__sub__',
    > '__subclasshook__', 'a
    > stimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fromordinal',
    > 'fromtimest
    > amp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max',
    > 'microsecond', 'm
    > in', 'minute', 'month', 'now', 'replace', 'resolution', 'second',
    > 'strftime', 's
    > trptime', 'time', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo',
    > 'tzname
    > ', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday',
    > 'year']
    >>>> from datetime.datetime import today

    > Traceback (most recent call last):
    > File "<stdin>", line 1, in <module>
    > ImportError: No module named datetime

    > so dir on datetime shows symbols date, time, datetime,etc
    > dir on datetime shows today, now, etc
    > lets say for arguments sake that I want to just import the today
    > function, according to the documentation, the line should be:
    > from datetime.datetime import today.
    > as you can see, that didn't work. why not?

    Because datetime is a module, but datetime.datetime is a class. You can
    import individual names from a module, but a class is a monolithic
    all-or-nothing chunk.

    There's the potential for confusion because Python also has "packages",
    which are like modules but more structured: you can import a module from
    a package:

    >>> from xml import etree

    or import the package module directly:

    >>> import xml.etree)

    You can also import a submodule from the module:

    >>> from xml.etree import cElementTree

    or import the submodule directly

    >>> import xml.etree.cElementTree

    You can even import a class from the submodule:

    >>> from xml.etree.cElementTree import Element

    but what you *can't* do is import the submodule's class directly:

    >>> import xml.etree.cElementTree.Element

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: No module named Element

    However, what you did was import the datetime module (which is not a
    package, and does not therefore contains submodules), and reference the
    datetime class within that module (datetime.datetime), which is all OK.
    But datetime.datetime is a class, not a module, so you can't import
    anything from it. Neither can you import it directly:

    >>> import datetime.datetime

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: No module named datetime

    (in the last line, the name "datetime" refers to the class, not themodule.

    Hope this helps. You may learn a bit more by actually looking at the
    source of the module, which probably lives in


    Steve Holden +1 571 484 6266 +1 800 494 3119
    PyCon is coming! Atlanta, Feb 2010
    Holden Web LLC
    Steve Holden, Jan 7, 2010
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Xavier
    Aug 6, 2003
  2. Replies:
    Diez B. Roggisch
    Jan 9, 2007
  3. Joshua Kordani
    Joshua Kordani
    Jan 7, 2010
  4. Tobiah
    Thomas Rachel
    Jun 3, 2011
  5. Peter Otten
    Peter Otten
    Mar 20, 2014

Share This Page