2

I have directory structure like the following:

MainDir --FooBar --foobar.py, __init__.py
         |
         Ltests -- foobartest.py, __init__.py

Inside foobartest.py, I am importing

from FooBar.foobar.func_in_foobar import *

__init__.py in foobar contains from .foobar import *

And the init.py is empty in tests folder

But when I try to run the foobartest I get this error

No module named FooBar.foobar.func_in_foobar
2

1 Answer 1

2

I think you can solve this problem the same way as in the answer by Sorin here - https://stackoverflow.com/a/6098238/1491900:

import os, sys, inspect
 # realpath() with make your script run, even if you symlink it :)
 cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
 if cmd_folder not in sys.path:
     sys.path.insert(0, cmd_folder)

 # use this if you want to include modules from a subforder
 cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"subfolder")))
 if cmd_subfolder not in sys.path:
     sys.path.insert(0, cmd_subfolder)

 # Info:
 # cmd_folder = os.path.dirname(os.path.abspath(__file__)) # DO NOT USE __file__ !!!
 # __file__ fails if script is called in different ways on Windows
 # __file__ fails if someone does os.chdir() before
 # sys.argv[0] also fails because it doesn't not always contains the path
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.