Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

ModuleNotFoundError: No module named 'x' when trying to run my code

Really at my wits end, tried multiple solutions including using a setup.py file, changing relative imports to absolute imports and vice-versa, package restructuring, ensuring each package as an __init__.py file and more. Any help would be appreciated. I have simplified my project below.

My project structure is as follows:

myProject
   |
   |__ src
        |
        |__ foo
        |     - __init__.py
        |    |
        |    |__ bar
        |          - __init__.py
        |         |
        |         |__ baz
        |              - __init__.py
        |              - baz_functions.py
        |              - baz_watch.py
        |
        | - __init__.py
        | - project_code.py
        | - main.py

As for the files:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

main.py

import project_code

if __name__ == '__main__':
    project_code.run()

project_code.py

import foo.bar.baz.baz_functions

def run():
    print('Hello World!')

baz_watch.py

from baz_functions import function_1, function_2

print('Watching...')

baz_functions.py

def function_1():
   print('I am function 1')

def function_2():
   print('I am function 2')

Naturally, without the: import foo.bar.baz.baz_functions in project_code.py, the code runs just fine.

The error I get is:

Traceback (most recent call last):
  File "C:\xxx\xxx\xxx\myProject\src\main.py", line 1, in <module>
    import project_code
  File "C:\xxx\xxx\xxx\myProject\src\project_code.py", line 1, in <module>
    import foo.bar.baz.baz_functions
  File "C:\xxx\xxx\xxx\myProject\src\foo\bar\baz\baz_watch.py", line 1, in <module>
    from baz_functions import function_1, function_2
ModuleNotFoundError: No module named 'baz_functions'

>Solution :

baz_functions is not a top-level module; it lives in the package foo.bar.baz and, using an absolute import, has to be imported as such.

A relative import can use . to refer to a module in the same package as the importing module:

from .baz_functions import function1, function2
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading