[Tutor] __import__()

Emile van Sebille emile at fenx.com
Fri Sep 24 03:02:18 CEST 2010


On 9/23/2010 8:26 AM Pete said...
> Hiya,
>
> still working on my plugin architecture. I figured out how to import modules of which I don't know the name yet at compile time,
> by using __import__() instead of import.
>
> So that works fine when I want to have the equivalent of
>
> import spam
>
> ... by using
>
> __import__('spam')
>
> Question:
>
> what is the equivalent of
>
> from spam import *

Something you probably really don't want to do as it will pollute your 
namespace. But, if you insist, you could play with:

ActivePython 2.6.1.1 (ActiveState Software Inc.) based on
Python 2.6.1 (r261:67515, Dec  5 2008, 13:58:38)
[MSC v.1500 32 bit (Intel)] on win32
 >>> xx = __import__('httplib')
 >>> dir(xx)
['ACCEPTED', 'BAD_GATEWAY', ...]

 >>> for ii in dir(xx): globals()[ii] = xx.__dict__[ii]
...
 >>> dir()
['ACCEPTED', 'BAD_GATEWAY', ...]
 >>>

Note, this really is for consenting adults only, and changing globals() 
is not really supported and may change in the future.  Note that from 
the docs, globals() is defined to "Return a dictionary representing the 
current global symbol table" and not as "Return the dictionary holding 
the current global symbol table" so the fact that it works on may 
version (and perhaps all others) doesn't mean it'll work everywhere.

HTH,

Emile











































More information about the Tutor mailing list