[Python-Dev] __import__ problems

Steven D'Aprano steve at pearwood.info
Fri Nov 28 18:47:24 CET 2008

On Sat, 29 Nov 2008 03:30:49 am Christian Heimes wrote:
> May I point you to the two leading underscores? The name '__import__'
> clearly suggests that the function is part of Python's internals. By
> definition all attributes of the form __*__ are not meant to be used
> directly. 

What about __doc__, __name__ and __slots__, to mention just a few?

I believe that __import__() is the recommended way to import a module 
known only at runtime. The docs also don't seem to agree with your 
assertion that __import__ is not to be touched. On the contrary:

"The function is invoked by the import statement. It mainly exists so 
that you can replace it with another function that has a compatible 

Far from saying "Do Not Touch", the docs say "Please, go ahead and 
replace __import__ if needed". If the OP wants "import x.y.z" to load 
module z instead of x, it seems to me that is exactly the problem 
__import__ is designed to allow him to do.

> Any suggestion to change the arguments of __import__() are 
> futile. It's not going to happen unless the feature is required by
> Python's internal import system.

That may very well be true, but I don't know why you're dumping on me. 
It wasn't my suggestion to change __import__. I merely said I could see 
some advantages to it. I spent most of my post telling the OP why I 
thought his arguments were wrong!


More information about the Python-Dev mailing list