mx Oddity in FC3/RedHat ES

Steve Holden steve at holdenweb.com
Mon Dec 20 09:56:15 EST 2004


Eric Azarcon wrote:

> Hello!
> 
> I've installed the mx package from egenix, and I am experiencing pretty
> odd behaviour.
> 
> If I launch python and run the following commands, I get an error:
> 
> 
>>>>import mx
>>>>from mx import *
>>>>mx.DateTime.today()
> 
Well,

   from anything import *

is bad form for any module unless (like Tkinter, for example) it's been 
specifically designed to support this behavior. Since "the mx package" 
is actually a number of inter-dependent packages you are almost 
guaranteeing trouble here.

mx is not designed to be imported, it's just a common namespace for a 
number of modules by the same author.

> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> AttributeError: 'module' object has no attribute 'DateTime'
> 
Try:

Python 2.4 (#1, Dec  4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
  >>> import mx.DateTime as dt
  >>> dt.today()
<DateTime object for '2004-12-20 00:00:00.00' at a0d85e0>
  >>>
> 
> OK, great. However, if I then ask for help on the mx package first, the
> above command will work.
> 
> 
>>>>help()
> 
> help> modules
> -- list of modules --
> help> mx
> -- displays mx info --
> help> mx.DateTime
> -- displays mx.DateTime info --
> help> --quit help here --
> 
>>>>mx.DateTime.today()
> 
> <DateTime object for '2004-12-20 00:00:00.00' at 984a1b8>
> 
> Any ideas what is going on? Is there a path problem that gets resolved
> by calling help()?
> 
> Note that issuing  help(mx) doesn't work. You have to go into help, do
> the modules listing and then ask for mx.
> 
Well, the help system actually imports the subpackages that live in the 
mx space when you ask for help about them. So that's why doing that 
allows you to resolve those names.

> This same behaviour is displayed on my Fedora Core 3 box running
> mx-2.0.5-3, and on 2 separate machines running RHEL-ES (most recent
> version with updates applied) and egenix-mx-base-2.0.6-py2.2_1.
> 
> Any help would be very appreciated!
> 
It's just a matter of using the packages in the intended way.

> Thanks,
> 
No problem.

> Eric
> 
> p.s. the background is that I need to use mx because the target boxes
> only have Python 2.2 on them. Using DateTime from Python 2.3 would be
> preferred, but being a newbie, I have no idea how to compile just that
> module from source and install it into 2.2. *sigh*

Well the first thing to try would be dropping it into /usr/lib/python2.2 
and seeing if you can import it without errors. You might actually find 
that the built-in "time" module contains enough date/time functionality 
for your needs if they are simple.

regards
  Steve
-- 
Steve Holden               http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/
Holden Web LLC      +1 703 861 4237  +1 800 494 3119



More information about the Python-list mailing list