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
asked May 14, 2014 at 17:04
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
answered May 14, 2014 at 17:09
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.