Let’s say I have such a directory structure:
- Documents/
- thesis_program/
- __init__.py
- classes.py
- utils.py
- GE_Test.py
- GE_Test_fail.py
classes.py and utils.py contains some classes and functions.
GE_Test.py and GE_Test_fail.py contains the exactly same code, except the import part.
In GE_Test.py I import classes and utils this way:
from utils import execute
from classes import Grammatical_Evolution
While in GE_Test_fail.py, I import classes and utils this way:
from thesis_program.utils import execute
from thesis_program.classes import Grammatical_Evolution
And unexpectedly I get a different result. Is there anything wrong here?
Do I import the modules correctly?
I can ensure that the result should be the same, because I generate the random number with certain seed
Also classes.py is somehow depended on utils.py since I have several common functions in utils.py. I suspect that utils is also a name used by the system. So in the second case (GE_Test_fail.py) The system utils override my utils.py. But it doesn’t seem make sense for me.
The complete source code of classes.py and utils.py is available here (if it helps to discover what’s wrong): https://github.com/goFrendiAsgard/feature-extractor
And also, the screenshots: https://picasaweb.google.com/111207164087437537257/November25201204?authuser=0&authkey=Gv1sRgCOKxot2a2fTtlAE&feat=directlink
add below mentioned lines to your test files which are going outside of your thesis folder.
import syssys.path.insert(0,"/path to your thesis folder/thesis_program")and maintain everything else; for example in
GE_Test.py.. .EDIT:
Or use this to make it more dynamic
(caution: don’t try to find the path by
os.path.abspath('./thesis_program')because it may not be always possible that you find yourtest_filesand yourthesis_folderare in the same dir; if you can fix them permanently in your code like above; then you are free to use them from anywhere on your system)