I am creating a package to be used in our company that adds the root of the project to the system path. 

I will add a `source_root.config` file in our root directory.

`add_root_path.py`

    import sys
    import inspect
    from pathlib import Path
    from inspect import getsourcefile
    
    CUR_FILE = Path(getsourcefile(lambda:0)).name
    SOURCE_ROOT_DEFAULT_FILE = 'source_root.config'
    
    
    def _get_dir_of_importer_file():
        """ the directory of the file importing the package"""
        frames_stack = inspect.stack()
        for frame in frames_stack:
            # first file that's not importlib._bootstrap and not current file
            if 'py' in frame.filename and Path(frame.filename).name != CUR_FILE:  
                file_name = frame.filename
                break
    
        return Path(file_name).resolve().parent
    
    
    def find_source_root(source_root_file=SOURCE_ROOT_DEFAULT_FILE):
        importer_dir = _get_dir_of_importer_file()
        while True:  # can go wrong if package is not used correctly
            files_in_dir = map(Path.resolve, importer_dir.glob('*'))
            for file in files_in_dir:
                if file.name == source_root_file:
                    return importer_dir
            importer_dir = importer_dir.parent
    
    
    def append_root_to_path(source_root_file=SOURCE_ROOT_DEFAULT_FILE):
        source_root = find_source_root(source_root_file)
        sys.path.append(source_root.resolve().as_posix())


This is done in order to properly import the files inside the project and because using `PYTHONPATH` in windows is not [that convenient][1] for `pytest` and `alembic` (meaning not running the files directly via `python.exe`).


  [1]: https://stackoverflow.com/a/4580120/9253013