Strange __import__() behavior

Kiuhnm kiuhnm03.4t.yahoo.it
Wed Apr 25 17:03:36 EDT 2012


On 4/25/2012 22:05, Frank Miles 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!

I can't reproduce your problem on my configuration.
Anyway, you should note that if x.pyc and r.pyc are present, __import__ 
will try to import them and not the files x.py and r.py.
Try deleting x.pyc and r.pyc.

Kiuhnm



More information about the Python-list mailing list