Locating Modules in Python

Locating modules in Python refers to the process of how Python finds and loads a module into our current program when we are trying to import it. Python's standard library comes with a large number of modules that we can use in our programs with the import statement.

Module Search Process

When you write an import statement like import mymodule, the Python interpreter searches for the module in the following sequence ?

  • The current directory − Python first checks the directory of the current script.
  • PYTHONPATH Environment Variable − If the module isn't found in the current working directory, Python then searches each directory in the shell variable PYTHONPATH.
  • Default Install Locations − If all else fails, Python checks the default path. On UNIX, this default path is normally /usr/local/lib/python/.

These module search paths are stored in the built-in sys module as the sys.path variable. The sys.path variable contains the current directory, PYTHONPATH, and the installation-dependent default paths.

The sys.path Variable

Python stores the complete module search path in a list as the sys.path variable, which comes from the built-in sys module. This list shows exactly where Python will look for modules ?

import sys

# Display all module search paths
print("Module search paths:")
for path in sys.path:
    print(f"  - {path}")
Module search paths:
  - /home/cg/root/682c9745587be
  - /usr/lib/python312.zip
  - /usr/lib/python3.12
  - /usr/lib/python3.12/lib-dynload
  - /usr/local/lib/python3.12/dist-packages
  - /usr/lib/python3/dist-packages

This list contains the current working directory, any additional directories listed in the PYTHONPATH environment variable, and standard system directories for built-in and third-party modules.

Modifying Module Search Path

You can dynamically add directories to the module search path using sys.path.append() ?

import sys

# Add a custom directory to the module search path
sys.path.append('/custom/module/directory')

print("Updated search paths:")
for path in sys.path[-3:]:  # Show last 3 paths
    print(f"  - {path}")
Updated search paths:
  - /usr/local/lib/python3.12/dist-packages
  - /usr/lib/python3/dist-packages
  - /custom/module/directory

The PYTHONPATH Environment Variable

PYTHONPATH is an environment variable that consists of a list of directories. Python adds these directories to the module search path when it starts. The syntax varies by operating system ?

Windows System

set PYTHONPATH=c:\python\lib;c:\mymodules

Unix/Linux System

export PYTHONPATH=/usr/local/lib/python:/home/user/mymodules

PYTHONPATH helps us add custom directories to Python's module search path without modifying our program code. This is particularly useful for maintaining separate module directories across different projects.

Checking Module Location

You can find where a specific module is located using the __file__ attribute ?

import os
import sys

# Check location of built-in modules
print("OS module location:", os.__file__)
print("Sys module location:", sys.__file__)
OS module location: /usr/lib/python3.12/os.py
Sys module location: /usr/lib/python3.12/sys.py

Conclusion

Python locates modules by searching through sys.path in a specific order: current directory, PYTHONPATH directories, and default installation paths. Understanding this process helps you organize modules effectively and troubleshoot import issues.

Updated on: 2026-03-25T07:38:03+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements