Strange __import__() behavior

Frank Miles fpm at u.washington.edu
Wed Apr 25 16:05:34 EDT 2012


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!

  -F





More information about the Python-list mailing list