Consider:
stuff/
__init__.py
mylib.py
Foo/
__init__.py
main.py
foo/
__init__.py
script.py
script.py
wants to import mylib.py
.
This is just an example, but really I just want to do a relative import of a module in a parent directory. I've tried various things and get this error…
Attempted relative import beyond toplevel package
I read somewhere that the script from where the program starts shouldn't reside in the package, and I tried modifying the structure for that like so…
stuff/
mylib.py
foo.py // Equivalent of main.py in above
foo/
__init__.py
script.py
But I got the same error.
How can I accomplish this? Is this even an adequate approach?
In Python 2.
Best Answer
After fiddling with it a bit more, I realized how to set it up, and for the sake of specificity I won't use foo bar names. My project directory is set up as...
A line in
object_editor.py
looks like...A line in
editor.py
looks like...or alternatively
The key is that in the example I gave in the question, the "main" script was being run from within the package. Once I moved it out, created a specific package (
core
), and moved the library I wanted the editors to share (ntlib
) into that package, everything was hunky-dory.