2016-05-30 4 views
11

mam skopiowane linię testową roboczego po linii i po prostu zmienił kilka nazwisk (przynajmniej tak myślałem), a teraz mam to bardzo tajemniczy błąd: (I zastąpiły niektóre rzeczy z Foo BAR)Co oznacza niepoprawnie zaimportowany moduł "testów"?

ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed? 

Problem polega na tym, że w ogóle nie rozumiem błędu. Co oznacza ten komunikat o błędzie?

Kompletna StackTrace:

Traceback (most recent call last): 
    File "BAR/modeling/manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute 
    super(Command, self).execute(*args, **options) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 531, in run_tests 
    suite = self.build_suite(test_labels, extra_tests) 
    File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 451, in build_suite 
    tests = self.test_loader.discover(start_dir=label, **kwargs) 
    File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 206, in discover 
    tests = list(self._find_tests(start_dir, pattern)) 
    File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 267, in _find_tests 
    raise ImportError(msg % (mod_name, module_dir, expected_dir)) 
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed? 
+0

Czy możesz wysłać kompletny ślad stosu? –

+0

Proszę dodać zaangażowane drzewo plików, aby sprawdzić strukturę i plik, do którego próbujesz zaimportować 'testy' – trinchet

Odpowiedz

48

Z mojego doświadczenia wynika, dziwne ImportErrors gdy uruchomione testy są spowodowane przez ImportError w module samego badania.

Upewnij się, że moduł testy mogą być importowane:

$ python manage.py shell 
... 
>>> import foo.exports.tests 

Edit:

Jeśli to powoduje błąd, upewnij się, że nie mają zarówno katalog foo/exports/tests i plik foo/exports/tests.py

+0

Tak, mówi, że nie ma takiego modułu. Ale plik tam jest. Co jeszcze mogę zrobić? – jonalv

+0

Czy oba moduły Pythona 'foo' i' export' są poprawne, to znaczy zawierają '__init __. Py'? –

+0

Tak, mam pliki '__init __. Py' i mój edytor (Eclipse) pokazuje ikonę modułu, a nie ikonę folderu – jonalv

0

W moim przypadku problem polegał na tym, że próbowałem uruchomić zadanie testowe django z dowiązania symbolicznego do folderu z projektem, a nie ze ścieżki "rzeczywistej". Kiedy uruchamiam zadanie testowe django z folderu projektu nie używając dowiązania symbolicznego, nie otrzymuję tego błędu.