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?
This is caused by the fact that the version of Python you're running your script with is not configured to search for modules where you've installed them. This happens when you use the wrong installation of pip to install packages.
Python looks for modules in “sys. It looks for a file called a_module.py in the directories listed in the variable sys. path .
The __init__.py files are required to make Python treat directories containing the file as packages. This prevents directories with a common name, such as string , unintentionally hiding valid modules that occur later on the module search path.
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")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With