apizzimenti apizzimenti - 5 months ago 10
Python Question

Python can't find local module

I have a folder structure like this:

setup.py
core/
__init__.py
interpreter.py
tests/
__init__.py
test_ingest.py


If I try to import
core
in
test_ingest.py
and run it, I get an
ImportError
saying that the
core
module can't be found. However, I can import
core
in
setup.py
without an issue. My IDE doesn't freak out, so why is this error occurring?

Answer

When you import your package, Python searches the directories on sys.path until it finds one of these: a file called "core.py", or a directory called "core" containing a file called __init__.py. Python then imports your package.

You are able to successfully import core from setup.py because the path to the core directory is found in sys.path. You can see this yourself by running this snippet from your file:

import sys

for line in sys.path:
     print line

If you want to import core from a different file in your folder structure, you can append the path to the directory where core is found to sys.path in your file:

import sys
sys.path.append("/path/to/your/module")