Propagate import for all modules in a package.

Diez B. Roggisch deets at nospam.web.de
Fri Jul 17 13:52:30 EDT 2009


Phil schrieb:
> I'm really new to Python and I am absolutely stumped trying to figure
> this out. I have searched plenty, but I am either searching for the
> wrong keywords or this isn't possible.
> 
> What I want to do is have one import be global for the entire package.
> Here is an example...
> 
> <package>
>   __init__.py
>   module1.py
>   module2.py
>   ...
>   moduleN.py
> 
> I was thinking that I could just, for example, 'from datetime import
> datetime' in __init__.py and have the ability to use 'datetime'
> anywhere in any of the modules in 'package'.
> 
> This didn't work for me. Did I just do something wrong? Is what I am
> trying to do possible?

Each module has it's own namespace, there is no real global one. So 
there is no obvious and recommended way to do what you want.

You can do it through, by stuffing names into the __builtins__-module, 
which acts as "namespace of last resort"


from datetime import datetime
__builtins__['datetime'] = datetime

However, this is strongly discouraged - you can easily get 
name-conflicts, and undefined behavior in your modules if you rely on this.

Diez



More information about the Python-list mailing list