Тест, запущенный с помощью Nosetests, завершается с ошибкой ImportError, но работает с командой python.

При запуске теста с python mycore/tests4extractor.py он работает. Если запустить тест с nosetests ./mycore/tests4extractor.py, он не пройдёт с ImportError: No module named extractor. Я в папке helpers.

Структура проекта такова:

helpers/
    mycore/
        __init__.py
        extractor.py
        tests4extractor.py

Установка PYTHONPATH на абсолютный путь к helpers и/или helpers/mycore не помогает.

Ответить

test4extractor.py:

    import mycore
    from extractor import extract

следует изменить на:

    import mycore
    from mycore.extractor import extract

И python должен запускаться с python -mmycore.tests4_strings


person Ayrat    schedule 24.02.2012    source источник


Ответы (1)


Содержит ли tests4extractor.py import extractor?

Поскольку mycore — это пакет, вам нужно использовать абсолютный импорт:

from mycore import extractor

или относительный импорт:

from . import extractor
person Thomas K    schedule 24.02.2012
comment
Ты прав! Я обновлю вопрос, чтобы включить фрагмент кода. - person Ayrat; 24.02.2012
comment
Хм, после обновления python вылетает с подобным ImportError: No module named mycore. Но носовые тесты работают. - person Ayrat; 24.02.2012
comment
Чтобы заставить Python работать, мне пришлось запустить его с помощью python -mmycore.tests4_strings - person Ayrat; 24.02.2012