How to Import a Python Module From Another Directory

October 16, 2023
Justin Lumiere

python import from another directory

Importing modules is at the core of Python's functionality, and understanding its inner workings is critical for writing efficient code. In this blog post we'll explore some of the most commonly used techniques for importing modules from various directories into Python.

Every Python script has its own directory that is initialized at program startup and used as the starting point when searching for modules to import.

Absolute Paths

If you are writing code to access files in a file system, it is crucial to know whether a path is absolute or relative. In general, it is advisable to use an absolute path; however, when traversing through multiple subdirectories it may be more effective to utilize relative paths instead.

An absolute path is a complete description of a location on the computer, including which drive it resides on. Starting from the root directory (/), an absolute path includes each step necessary to reach its goal location - also referred to as full path or absolute pathname.

Absolute paths allow a program to run on any computer with the same file system, making data sharing across various machines possible.

Absolute paths allow you to link two files on your website with absolute paths, though be mindful that different operating systems treat backslashes differently; Windows uses backslash (), while UNIX utilizes forward slashes (/).

An absolute path is a unique address of any file or folder on a computer's file system, beginning with "/". It provides information about how to reach the location, including which drive it resides on. While absolute paths may provide more specific navigational assistance in certain circumstances, their limitations make them harder for use in complex file structures such as networks.

Relative Paths

When writing a Python program, you may require import modules or packages located outside the directory where your script resides. To achieve this objective, relative paths are an effective means of doing this; however, using relative paths instead of full paths could present issues when running it on different operating systems; use of the pythonpath variable can alleviate such concerns.

The Pythonpath function enables you to access files and directories within your Python project easily and effectively, helping maintain an organized codebase and increase reusability of code. Furthermore, using relative paths instead of absolute ones helps prevent coding errors and ensure proper navigation within a project.

To use a relative path, first establish your working directory by determining its parent directory and using a series of dots - one dot indicates your current directory while double dots point back upstream - to find where the file resides.

Relative paths provide an efficient means of working with Python projects as they don't require specifying a file's full path in order to import it, yet are less portable than full paths and may cause errors when used across operating systems. However, they can also be confusing for beginners and may lead to unexpected results when switching systems.


Python is a programming language designed to interact with an operating system's file structure, with its sys module serving as the key player in deciphering file paths, or addresses, within directory hierarchy. Knowing how to properly import modules into Python code helps organize projects more efficiently while streamlining coding workflow. In this blog post we'll cover various methods for importing modules from various directories into your code as well as how they're interpreted.

Importing modules into Python requires using file paths containing forward slashes (/) on Unix-like systems and backslashes () for Windows systems; this convention serves to distinguish various levels in the directory hierarchy. If the file you need to import is located somewhere other than where your script is running, a relative path should be used instead.

When importing modules in Python scripts, their module object stores all related import-related information and provides access to its import callable find_module(); in previous versions of Python however this method has been replaced by find_spec() method which loads and unloads modules if necessary.

Python's sys module features a list of path entry hooks which can be registered to handle Pythonpath. If a path entry cannot be found there, it will be searched in sys.path_importer_cache; this cache is updated by import machinery automatically but may also be cleared manually by user code. If an import path cannot be located then its import machinery will raise an ImportError error.


As part of your Python coding journey, it's vital that you learn how to import modules from various directories. Doing this will allow you to structure your code more efficiently while making maintenance and updates simpler; additionally it satisfies OOP's DRY principle while satisfying iteration's DRY principle if using an IDE that handles these imports for you.

Pythonpath is a variable used by Python to inform it where to look when importing modules and packages, similar to path variables in other programming languages; however, its more flexible nature allows for greater freedom. There are various methods of setting it such as the OS Module's Os module, adding it in a Python script file, appending to directories or setting virtual environments as virtual environments for this variable.

Python offers more than just one path finder; its import machinery supports extensible finding solutions so new path finders may be added as necessary to support additional types of paths. These default finders include pythonpath and meta path finders that know how to find built-in modules and frozen modules.

ImportError errors are among the most prevalent when it comes to importing Python files, typically indicating that Python cannot find certain functions or classes it needs for execution. These issues could arise from mistyping attribute names or from not existing in modules you import from. It's essential that Python developers learn how to fix such issues effectively.

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram