Python importing

import, python

Solution

Best practice is to import every module that defines identifiers you need, and use those identifiers as qualified by the module's name; I recommend using `from` only when what you're importing is a module from within a package. The question has often been discussed on SO.

Importing a module, say `moda`, from many modules (say `modb`, `modc`, `modd`, ...) that need one or more of the identifiers `moda` defines, does not slow you down: `moda`'s bytecode is loaded (and possibly build from its sources, if needed) only once, the first time `moda` is imported anywhere, then all other imports of the module use a fast path involving a cache (a dict mapping module names to module objects that is accessible as `sys.modules` in case of need... if you first `import sys`, of course!-).

Problem

I have a file, `myfile.py`, which imports `Class1` from `file.py` and `file.py` contains imports to different classes in `file2.py`, `file3.py`, `file4.py`. In my `myfile.py`, can I access these classes or do I need to again import file2.py, file3.py, etc.? Does Python automatically add all the imports included in the file I imported, and can I use them automatically?

Original source