[Python] Python ModuleNotFoundError importing from sibling sub directory modules

Discussão em 'Python' iniciado por Stack, Maio 9, 2025.

  1. Stack

    Stack Membro Participativo

    My directory structure:

    MusicProcessing
    │ main.py
    │
    ├───scripts
    │ │ checkFile.py
    │ │ list_audio_file_test.py
    │ │ list_test.py
    │ │ test.py
    │
    ├───src
    │ │ __init__.py
    │ │
    │ ├───audio_info
    │ │ │ audio_metadata.py
    │ │ │ __init__.py
    │ │
    │ ├───dir_processing
    │ │ │ directory_processing.py
    │ │ │ __init__.py
    │ │
    │ ├───generated_files
    │ │ │ __init__.py


    From \MusicProcessing, I want to debug \scripts\list_audio_file_test.py

    I get:

    Traceback (most recent call last):
    File "D:\MusicProcessing\scripts\list_audio_file_test.py", line 1, in <module>
    from src.dir_processing import DirectoryProcessing
    ModuleNotFoundError: No module named 'src'


    The script contents:

    from src.dir_processing import DirectoryProcessing
    dir_processing = DirectoryProcessing(r"H:\Music")
    dir_processing.get_audio_list_files()


    \src\dir_processing\__init__.py contents:

    '''
    @brief Package with directory_processing module
    '''
    # using absolute import as don't expect to be re-organizing directories
    from src.dir_processing.directory_processing import DirectoryProcessing

    ## @var __all__
    # @brief Exposes class for importing by other modules.
    # @details In modules needing the class, add `src.dir_processing.directory_processing import DirectoryProcessing`
    __all__ = ['DirectoryProcessing']


    If I move list_audio_file_test.py to the root, it runs fine.
    I DON'T want to move it.

    The scripts directory exists for one off concepts/quick sanity testing.

    I want to debug it (the project is in VS Code), so command line python.exe -i -m scripts.list_audio_file_test is not an option.

    I don't know how to resolve the sibling sub directory import throwing the ModuleNotFoundError.

    Continue reading...

Compartilhe esta Página