On 30/12/2015 00:21, xeon Mailinglist wrote:
I have my source code inside the directory `medusa`, and my unit tests inside 
`tests` dir. Both dirs are inside `medusa-2.0` dir. Here is my file structure 
[1].

When I run my tests inside pycharm, everything works fine, but when I try to 
run my unit tests inside in the prompt [2], the 
`scheduler/predictionranking.py` can't find the `hdfs` import [3]. I have set 
my environment inside the `medusa-2.0` dir with the virtualenv, I even have set 
`medusa-2.0` in the PYTHON_PATH [4]. The error that I have is in [5].

The question is, why the import is not being done correctly?


[1] My file structure

medusa-2.0$
medusa (source code)
    hdfs.py
    scheduler (dir with my schedulers)
        predictionranking.py
tests (my unit tests)


[2] I run the unit test like this.

medusa-2.0$ python -v tests/testSimpleRun.py


[3] The header in `predictionranking.py`

import hdfs

def get_prediction_metrics(clusters, pinput):
     """
     :param pinput (list) list of input paths

     """

     input_size = hdfs.get_total_size(pinput)

[4] My python path

     export MEDUSA_HOME=$HOME/repositories/git/medusa-2.0

     export PYTHONPATH=${PYTHONPATH}:${MEDUSA_HOME}/medusa

[5] error that I have

medusa-2.0$ python -v tests/testSimpleRun.py
# /home/xeon/repositories/git/medusa-2.0/medusa/local.pyc matches 
/home/xeon/repositories/git/medusa-2.0/medusa/local.py
import medusa.local # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/local.pyc
# /home/xeon/repositories/git/medusa-2.0/medusa/ranking.pyc matches 
/home/xeon/repositories/git/medusa-2.0/medusa/ranking.py
import medusa.ranking # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/ranking.pyc
# /home/xeon/repositories/git/medusa-2.0/medusa/decors.pyc matches 
/home/xeon/repositories/git/medusa-2.0/medusa/decors.py
import medusa.decors # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/decors.pyc
# /home/xeon/repositories/git/medusa-2.0/medusa/settings.pyc matches 
/home/xeon/repositories/git/medusa-2.0/medusa/settings.py
import medusa.settings # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/settings.pyc
import medusa.scheduler # directory 
/home/xeon/repositories/git/medusa-2.0/medusa/scheduler
# /home/xeon/repositories/git/medusa-2.0/medusa/scheduler/__init__.pyc matches 
/home/xeon/repositories/git/medusa-2.0/medusa/scheduler/__init__.py
import medusa.scheduler # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/scheduler/__init__.pyc
# /home/xeon/repositories/git/medusa-2.0/medusa/scheduler/predictionranking.pyc 
matches 
/home/xeon/repositories/git/medusa-2.0/medusa/scheduler/predictionranking.py
import medusa.scheduler.predictionranking # precompiled from 
/home/xeon/repositories/git/medusa-2.0/medusa/scheduler/predictionranking.pyc
Traceback (most recent call last):
   File "tests/simpleRun.py", line 4, in <module>
     from medusa.simplealgorithm import run_simple_execution
   File "/home/xeon/repositories/git/medusa-2.0/medusa/simplealgorithm.py", line 8, 
in <module>
     import accidentalfaults
   File "/home/xeon/repositories/git/medusa-2.0/medusa/accidentalfaults.py", line 5, 
in <module>
     import hdfs
   File "/home/xeon/repositories/git/medusa-2.0/medusa/hdfs.py", line 6, in 
<module>
     from system import execute_command
   File "/home/xeon/repositories/git/medusa-2.0/medusa/system.py", line 10, in 
<module>
     from ranking import rank_clusters
   File "/home/xeon/repositories/git/medusa-2.0/medusa/ranking.py", line 9, in 
<module>
     from scheduler.predictionranking import get_prediction_metrics
   File 
"/home/xeon/repositories/git/medusa-2.0/medusa/scheduler/predictionranking.py", line 
6, in <module>
     import hdfs

Hello,

Can you try to set your PYTHONPATH like that:

export PYTHONPATH=${PYTHONPATH}:${MEDUSA_HOME}

Regards
Karim



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to