2016-05-30 64 views
11

我抄一行工作測試線,只是改了幾個名稱(至少我是這樣認爲),現在我得到這個非常神祕的錯誤:(我已經更換了一些東西與FOO,BAR)「'測試」模塊導入錯誤「是什麼意思?

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

問題是我根本不理解錯誤。這個錯誤信息是什麼意思?

完整的堆棧跟蹤:

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

你能發佈完整的堆棧跟蹤嗎? –

+0

請添加涉及的文件樹,檢查您試圖導入'結構和文件'測試' – trinchet

回答

48

根據我的經驗,當運行測試由測試模塊自身在導入錯誤引起的怪異ImportErrors。

確保你的測試模塊可以被導入:

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

編輯:

如果會導致一個錯誤,請確保你沒有這兩個目錄foo/exports/tests和文件foo/exports/tests.py

+0

是的,它說沒有這樣的模塊。但該文件在那裏。我還可以做些什麼? – jonalv

+0

'foo'和'exports'是否都是正確的Python模塊,即它們是否包含'__init __。py'? –

+0

是的,我有'__init __。py'文件和我的編輯器(Eclipse)顯示模塊圖標,而不是文件夾圖標 – jonalv

0

在我的情況下,問題是因爲我嘗試從符號鏈接啓動django測試任務到項目文件夾,而不是從「真正的」路徑。當我從不使用符號鏈接的項目文件夾中運行django測試任務時,我不會收到此錯誤。