Reputation: 12702
I have a python application like this
/
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/test_john.py
What I am trying to do, is run the unit test test_john.py
which needs to use john.py
but it's in another folder.
In my tests/test_john.py
I get this when I run it
Traceback (most recent call last):
File "test_john.py", line 2, in <module>
from john import John
ImportError: No module named john
So how can I import a class, from the crawl folder....
Upvotes: 15
Views: 26243
Reputation: 120608
If your OS supports it, put a symbolic link to ../crawl
in the test
directory and then use from crawl.john import John
.
Upvotes: 3
Reputation: 85603
If your root folder is in your pythonpath and you make it an importable package as follows:
/__init__.py
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/__init__.py
/tests/test_john.py
you can do:
from crawl.john import John
or
from ..crawl.john import John
Upvotes: 17