Receiving Import Error: No Module named ***, but has __init__.py

Mark Rowlands picture Mark Rowlands · May 10, 2013 · Viewed 33.6k times · Source

I understand that this question has been asked several times but after reading them, and making the suggested fixes, I'm still stumped.

My project structure is as follows:

Project
      |
      src
        |
         root - has __init__.py
            |
            nested - has __init__.py
                  |
                  tests - has __init__.py
                  |
                  utilities - has __init__.py
                  |
                  services - has __init__.py

I've successfully run a unittest regression class from Eclipse without any issues.

As soon as I attempted to run the same class from the command-line (as other users who will be running the suite do not have access to Eclipse) I receive the error:

ImportError: No module named 'root'

As you can see from above, the module root has an __init__.py All __init__.py modules are completely empty.

And assistance would be gratefully received.

Answer

Gus E picture Gus E · May 10, 2013

Try adding a sys.path.append to the list of your imports.

import sys
sys.path.append("/Project/src/")
import root
import root.nested.tests