python import local module code example

Example 1: importing python module from different directory

# test.py
import sys
# append current python modules' folder path
# example: need to import module.py present in '/path/to/python/module/not/in/syspath'
sys.path.append('/path/to/python/module/not/in/syspath')

import module

Example 2: import local module python

# If the module is in the same directory:
import <module_name>

# If the module isn't in the same directory:
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')

import <module_name>

Example 3: import file from another directory python

# some_file.py
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')

import file

Example 4: python import file from different directory

# By default, you can't. When importing a file, Python only 
# searches the current directory, the directory that the 
# entry-point script is running from, and sys.path which includes
# locations such as the package installation directory 
# (it's actually a little more complex than this, but this covers
# most cases).

# you can however, add to the path at runtime

import sys
# insert at position 1 in the path, as 0 is the path of this file.
sys.path.insert(1, '/path/to/application/app/folder')

import file

file.function()

Example 5: python3 import all files in directory

from inspect import isclass
from pkgutil import iter_modules
from pathlib import Path
from importlib import import_module

# iterate through the modules in the current package
package_dir = Path(__file__).resolve().parent
for (_, module_name, _) in iter_modules([package_dir]):

    # import the module and iterate through its attributes
    module = import_module(f"{__name__}.{module_name}")
    for attribute_name in dir(module):
        attribute = getattr(module, attribute_name)

        if isclass(attribute):            
            # Add the class to this package's variables
            globals()[attribute_name] = attribute