2016-05-30 65 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测试任务时,我不会收到此错误。