Import trouble
Steve Holden
steve at holdenweb.com
Wed Dec 15 08:57:12 EST 2004
Frans Englich wrote:
> Hello all,
>
> I have a couple of questions related to module importing.
>
> 1) When I start my Python program with `python foo.py` instead of simply
> adding a interpreter comment on the first line and do `./foo.py`, some
> "local" imports fails, I guess because current working directory is
> different. Is CWD the only difference between running `python foo.py` and
> `./foo.py`? What is the recommended way? (I guess security is one aspect that
> can be argued)
You should post the exact error message together with a snippet of the
code around the error. One possibility is that the "shebang" line
(#!...) in your script is invoking a different Python than when you
enter "python" and the shell locates it on your path.
>
> 2) I use Python modules which are not usually installed(libxml2/libxslt) and
> want to fail gracefully in case the modules aren't available; print an
> informative message. Since these imports are done in several related
> programs, I don't want to duplicate the code, but instead centralize it. The
> problem is that when I put the module imports/exception code in a function,
> it is as if it wasn't imported, even though there was no exceptions. I
> suspect this is because the import is only done into the current namespace:
> the function scope(instead of file scope as I want). Is there any solution to
> my problem? Or should I solve it in another way?
>
Craig Ringer has already answered this question.
> 3) And the last -- but funniest -- import problem: sometimes imports of
> modules in "xml." fails, sometimes it works. For example, this code:
> from xml.dom.minidom import getDOMImplementation
> impl = getDOMImpmentation() #NameError: name 'getDOMImpmentation' is not
> defined
>
> fails as shown, and other times it works. When running pydoc as local web
> server, it also sometimes fails, although I haven't been able to reproduce
> for a error message. I have recent versions of PyXML and 4suite installed.
>
> What is wrong? Any idea what that could be wrong with my setup, which could
> cause this?
>
Again you should post a little more detail. In your example it looks
like you made a simple spelling error: getDOMImpmentation instead of
getDOMImplementation.
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