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