Relative imports in Python
python, python-packaging
Solution
Nevermind, I solved it:
src/
main.py
mod/
__init__.py
components/
__init__.py
expander.py
language_id.py
utilities/
__init__.py
functions.py
main.py then refers to the subpackages as:
from mod.components.expander import *
from mod.utilities.functions import *
expander.py and language_id.py have access to functions.py with:
from ..utilities.functions import *
But the interesting thing is that I had a text file inside the components directory that expander.py uses. However, at runtime it couldn't locate the file even though it was in the same directory. I moved the text file to the same directory as main.py and it worked. Seems counter-intuitive.
Problem
Hey all -- I am pulling my hair out with relative imports in Python. I've read the documentation 30 times and numerous posts here on SO and other forums -- still doesn't seem to work. My directory structure currently looks like this ``` src/ __init__.py main.py components/ __init__.py expander.py language_id.py utilities/ __init__.py functions.py ``` I want expander.py and language_id.py to have access to the functions module. I run python main.py which accesses the modules just fine with from components.expander import * and components.language_id import *. However, the code inside expander and language_id to access the functions module: ``` from ..utilities.functions import * ``` I receive this error: ``` ValueError: Attempted relative import beyond toplevel package ``` I have gone over it a bunch of times and it seems to follow the documentation. Anyone have any ideas of what's going wrong here?