handling modules in packages

T

Tommy Grav

Hi,

I am working on a package that contains a number of
different modules:
> ls pyAstro
__init__.py
constants.py
conversion.py
observation.py
orbit.py
transformation.py

however, I find that several of the modules have the
same import statements:

orbit.py:

import numpy
import constants
import conversion
import observations

observations.py:

import numpy
import constants
import conversions
import transformations

The modules themselves are not overly large, but it bugs
me to have to import numpy twice (or even more as the
number of modules grow). Is there a way to import numpy
once in the package (like in the __init__.py file) such that
it is accessible to all the modules? Or is the multiple imports
just something one has to live with?

Thanks for any help or direction to webpages discussing this
topic.

Cheers
Tommy
 
D

Diez B. Roggisch

Tommy said:
Hi,

I am working on a package that contains a number of
different modules:

__init__.py
constants.py
conversion.py
observation.py
orbit.py
transformation.py

however, I find that several of the modules have the
same import statements:

orbit.py:

import numpy
import constants
import conversion
import observations

observations.py:

import numpy
import constants
import conversions
import transformations

The modules themselves are not overly large, but it bugs
me to have to import numpy twice (or even more as the
number of modules grow). Is there a way to import numpy
once in the package (like in the __init__.py file) such that
it is accessible to all the modules? Or is the multiple imports
just something one has to live with?

Essentially, yes. That's the way it is, and it's better for understanding
how things work in the respective submodules.

However, you can stuff things into the __builtins__-module using setattr,
and thus make names known globally.

But it's a hack, and it means that you possibly create conflicts if
different modules have different ideas on what is supposed to live under
one key.

so - don't do it. And live with the imports. After all, that's only c'n'p,
and not of the bad kind.

Diez
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top