Module Not Found Error: No module named 'src'

Question:

Whenever I run main.py in the terminal, I get the error

ModuleNotFoundError: No module named ‘src’

However it runs fine in PyCharm.

Project Structure:

-project
  -resources
  -src
    -package1
      -script1.py
      -script2.py
    -package2
      -script3.py
    -main.py

This is what I run in the terminal:

project$ python src/main.py

Error:

Traceback (most recent call last):
  File "src/main.py", line 1, in <module>
    from src.package1 import script1
ModuleNotFoundError: No module named 'src'

I have already tried adding absolute path of folder/package ‘src’ to sys.path

main.py
from src.package1 import script1
from src.package1 import script2
from src.package2 import script3

if name=="__main__":
  ...
  ...
sys.path

current sys.path is ['/home/xyz/Projects/project/src', '/home/xyz/Apps/anaconda3/envs/project/lib/python37.zip', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7/lib-dynload', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7/site-packages', 'src/main.py']
Asked By: Wave

||

Answers:

https://docs.python.org/3/tutorial/modules.html#the-module-search-path

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path. sys.path is initialized from these locations:

  • The directory containing the input script (or the current directory when no file is specified).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • The installation-dependent default.

Since you supply a file, src/main.py, its containing folder is going to be the search root. You could import the modules without specifying the src. part.

Answered By: tevemadar

You can add a path to python runtime using sys.path:

import sys
sys.path.append('src/package1')
import script1
Answered By: Youcef4k

You should be able to run it with project$ python -m src.main

Source: https://qavalidation.com/2021/03/how-to-resolve-modulenotfounderror-no-module-named-src.html/

Answered By: Will
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.