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