Strange __import__() behavior

Chris Kaynor ckaynor at zindagigames.com
Wed Apr 25 16:22:15 EDT 2012


On Wed, Apr 25, 2012 at 1:05 PM, Frank Miles <fpm at u.washington.edu> wrote:

> I have an exceedingly simple function that does a "named import".
> It works perfectly for one file "r"- and fails for the second "x".
>
> If I reverse the order of being called, it is still "x" that fails,
> and "r" still succeeds.
>
> os.access() always reports that the file is readable (i.e. "true")
>
> If I simply call up the python interpreter (python 2.6 - Debian stable)
> and manually "import x" - there is no problem - both work.  Similarly
> typing the __import__("x") works when typed directly at the python
> prompt.  Both 'x' and 'r' pass pychecker with no errors.  The same error
> occurs with winpdb - the exception message says that the file could
> not be found.  'file' reports that both files are text files, and there
> aren't any strange file-access permissions/attributes.
>
> Here's the function that is failing:
>
> def named_import(fname, description) :
>    import  os
>    pname= fname + '.py'
>    print "ENTRY FILE", pname, ": acces=", os.access(pname, os.R_OK)
>    try :
>        X=__import__(fname)
>        x= [ X.cmnds, X.variables ]
>    except ImportError :
>        print "failed"
>    return x
>
> This is the first time I've needed to import a file whose name couldn't
> be specified in the script, so there's a chance that I've done something
> wrong, but it seems very weird that it works in the CL interpreter and
> not in my script.
>
> TIA for any hints or pointers to the relevant overlooked documentation!
>

My first suggestion would be to remove the try...except and let the actual
exception propagate up. That might provide enough information on its own
for you to figure out the issue, and if it does not, it will provide an
error message that would be extremely helpful to anybody else trying to aid
you in figuring out the issue.

My second suggestion is that it could be an issue with relative vs absolute
imports


>  -F
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120425/653845b2/attachment-0001.html>


More information about the Python-list mailing list