Wizzard
Wizzard

Reputation: 12702

Import a class from a folder at another level

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

Answers (2)

ekhumoro
ekhumoro

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

joaquin
joaquin

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

Related Questions