2015-07-24 2 views
1

Итак, в радостной традиции запуска проекта, а не для правильного управления исходным кодом перед первоначальной фиксацией, я ушел и сломал свой тестовый Runner Django. Похоже, что PATH где-то перепутали, так что это, вероятно, не проблема Django.Ошибка импорта тестового бегуна Python/Django

Я могу успешно запустить сервер django dev, и все функции проекта работают. У меня есть, может быть, 70 тестов в проекте, который работал, пока в какой-то момент я не представил что-то, что их не делало.

Ошибка:

====================================================================== 
ERROR: app.group.tests (unittest.loader.ModuleImportFailure) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/unittest/case.py", line 58, in testPartExecutor 
    yield 
    File "/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/unittest/case.py", line 577, in run 
    testMethod() 
    File "/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/unittest/loader.py", line 32, in testFailure 
    raise exception 
ImportError: Failed to import test module: app.group.tests 
Traceback (most recent call last): 
    File "/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/unittest/loader.py", line 312, in _find_tests 
    module = self._get_module_from_name(name) 
    File "/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/unittest/loader.py", line 290, in _get_module_from_name 
    __import__(name) 
ImportError: No module named 'app.group' 

Проверка стандартов:

(venv) Jamies-MacBook-Pro:app Jamie$ python3 
Python 3.4.1 (default, Jun 30 2015, 16:47:23) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path 
['', '/Users/Jamie/.pyenv/versions/3.4.1/lib/python34.zip', '/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4', '/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/plat-darwin', '/Users/Jamie/.pyenv/versions/3.4.1/lib/python3.4/lib-dynload', '/Users/Jamie/.pyenv/versions/venv/lib/python3.4/site-packages'] 

Там нет ничего очевидно, что может быть баловаться с PATH, и я попал на сцену, где у меня есть много непроверенной функциональности, Я не могу развернуть (и предстоящую дату выпуска). Есть идеи?

+0

Немного глупо, но у вас есть '__init __. Py' в папках' app' и 'group'? – Hevlastka

+0

Конечно. Даже если я запускаю какой-либо старый тест, возникает некоторая вариация этой ошибки :( –

ответ

8

Итак, после того, как выкапываете, выясняется, что существует известная оговорка с тест-пилотом Django. Если у вас есть dunder-init в корневой папке проекта, эта проблема возникнет. Нарушитель преступник первый файл ниже:

[email protected]:~/projects/app$ tree 
. 
├── __init__.py 
├── app 
│   ├── __init__.py 
│   ├── celery.py 
│   ├── settings.py 
│   ├── urls.py 
│   └── wsgi.py 
├── client 
│   ├── __init__.py 
│   ├── admin.py 
│   ├── api.py 
│   ├── migrations 

Конечно, существование Shebang! в manage.py, в сочетании с Dunder-INIT означает, что все приложение импортируется как модуль, который портит внутреннюю ссылку ,

tl; dr - если это произойдет, удалите корень __init__.py в каталоге /project/.

+0

Работал для меня. –

Смежные вопросы