I feel a little embarrassed for not knowing this already but it’s something I’ve always struggled with. I have a directory like this:
marketing-reports/
utils.py
Reporting/
Adhoc/
for_sales/
salesperson1/
current.py
I want to import utils.py from current.py but every suggestion I have seen so far does not work.
I have seen two main suggestions. The first involves using sys.path. I have tried that as below:
import sys
sys.path.insert(1, 'C:\\marketing-reports\\Reporting')
from Reporting import utils
… result is:
Exception has occurred: ModuleNotFoundError
No module named 'Reporting'
I have also tried another suggestion I got from this article like
import path
import sys
# directory reach
directory = path.path(__file__).abspath()
# setting path
sys.path.append(directory.parent.parent)
# importing
from Reporting import utils
… but this solution is kind of a non-starter since VSCode tells me "Import "path" could not be resolved by Pylance". I tried to fix this by running py -m pip install path, but that still didn’t fix anything because I got Exception has occurred: AttributeError: module 'path' has no attribute 'path'. Then I changed path to Path which VSCode seemed to like better, but after all that I got right back to where I started with the No Module named 'Reporting' error.
What’s going on here? What’s the best way to import this? I feel like I’m making this a lot harder than I need to.
>Solution :
According to your directory tree, utils is not located inside Reporting.
First solution fixed:
import sys
sys.path.insert(1, 'C:\\marketing-reports')
import utils
Optional solution, depending on your way of running the code:
from ..... import utils
I do believe you might need to repackage utils.py somewhere else, but for simple uses these solutions will work.