Ever found yourself drowning in a sea of Python files, trying to import a module from a parent directory? You’re not alone! The Python import system can seem like a wild jungle, but chill out, we’ve got you covered!
All you need to do is use the sys
module. By sticking the directory you need into the sys.path
list, you’re telling the Python interpreter where to find the module you’re after. Once you’ve tweaked sys.path
, you can import the module just like any other.
This guide will dive into how you can import from parent directories in Python. We’ll also check out some specific import use cases to give you a better understanding of the directory structure. Ready to dive in? Let’s go!
Importing in Python: The Quick and Dirty
Let’s cut to the chase: we’re talking about importing in Python. You know those lines of code at the start of your Python scripts that begin with import
or from
? Those are your key to unlocking Python’s vast libraries and modules.
What’s the Python Import System All About?
The Python import system is your best buddy when it comes to reusing and organizing code. It makes managing complex projects a breeze.
To import a module or package in Python, all you need is the import
statement. Modules are shipped as packages, which are like directories full of Python files.
To import a module from a parent directory, just use the sys.path
module to add the parent directory to Python’s path. After that, you can import the module with the import
statement.
Show Me How It’s Done: Importing from Parent Directory
Let’s break down importing from a parent directory step by step. We’ll create the necessary directories and files, add some Python files, edit those files, and then run the code.
- Fire up your file explorer and open up your desired local drive. We’ll use the local E drive, and create a new directory named
my_project
. Insidemy_project
, create another directory namedmodule_dir
. - Next, create a new .py file named
main.py
in themy_project
directory. Then, make another Python file namedmy_module.py
inmodule_dir
. - Open
my_module.py
and add this code:
def my_function():
print("Hello from my_module!")
Save and close the file.
Now, open main.py
and add this code:
import sys
import os
# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))
# Add the parent directory to sys.path
sys.path.append(parent_dir)
# Import the module from the parent directory
from module_dir import my_module
# Use a function from my_module
my_module.my_function()
Here, we’re figuring out the location of the directory one level up from the script (the parent directory) and telling Python to look in this folder when it needs to import modules. After that, we’re importing a module named my_module
that’s inside a directory called module_dir
in this parent directory. Finally, we’re calling a function named my_function
from my_module
.
Save and close the file.
- To run this code, open your terminal in your code editor and run the
main.py
file.main.py
will import the function frommy_module.py
.
Oops, I Did It Again: ImportError and ModuleNotFoundError in Python
Python throws an ImportError
exception when it can’t find the module you’re trying to import.
ImportError
is a subclass of the ModuleNotFoundError
exception. You’ll see it when the imported module doesn’t exist or can’t be loaded.
Here are some scenarios when these exceptions can occur:
- The module or package is not in the
sys.path
. - The module or package name is misspelled or does not exist.
- There’s an issue with the module’s code, which prevents it from being imported properly.
If you come across these errors, you can:
- Double-check the spelling and existence of the module or package.
- Add the necessary directory to
sys.path
usingappend()
orinsert()
. - Fix any issues in the module’s code that might be preventing it from being imported.
And that’s the first half of the guide! We’ll dive into Python’s directory structure, the sys.path
list, and working with modules and packages in the next part. Stay tuned!