How to (Python) get value from __init__ in same dir

If you get

ImportError: attempted relative import with no known parent package

when you do like

import . from something

especially from the script executed, just try

from __init__ import something

Even though it could be problematic when there are many __init__.pys in sys.path, it would be helpful in some simple situaions.

by ghchoi

How to import from the in the same directory?

I see ‘import from parent module’ as an anti-pattern in Python. Imports should be the other way around. Importing from modules’s is especially problematic. As you noticed, importing module from foo/ involves importing foo/ first, and you may end up with a circular dependency. Adding a print("Importing", __name__) to your init files helps see the sequence and understand the problem.

I’d suggest that you moved the code you want to import in from to a separate lower-level module, and just import some names from that module in to expose it at higher level.

Let’s suppose that you had some class Bar in your I'd reorganize it the following way.

from bar import Bar  # exposed at the higher level, as it used to be.

class Bar(object): ...

from . import Bar  # Now it works.

Ideally an should contain nothing but imports from lower-level modules, or nothing at all.

by 9000



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store