Nose2 не может импортировать модули, но только при запуске в докере - PullRequest
0 голосов
/ 08 июня 2018

У меня есть проект Python Celery следующей структуры:

├── celeryconfig.py
├── Dockerfile
│   └── _templates
├── framework
│   ├── celery
│   │   ├── celery.py
│   │   ├── __init__.py
│   │       └── __init__.cpython-36.pyc
│   ├── tasks
│   │   ├── tasks.py
│   │   ├── __init__.py
│   ├── utilities
│   │   ├── utilities.py
│   │   ├── __init__.py
│   ├── tests
│   │   ├── __init__.py
│   │   └── test_celery.py

, который я запускаю из каталога верхнего уровня с помощью команды celery framework.celery.celery worker

У меня есть tets в каталоге testsчто я бегу, используя нос2.Когда я запускаю его в каталоге, тесты проходят без проблем.Однако, когда тесты выполняются как часть процесса сборки докера, процесс nose2 завершается неудачно, потому что он не может понять смысл импорта, например

# test_celery.py

from framework.tasks.tasks import my_function

def test_my_function():
    # Do some testing.

Импорт функции завершается успешно, но не выполняетсяимпорт импортированного файла, который выглядит следующим образом:

# tasks.py

from framework.utilities.utilities import some_other_function

Отчасти проблема, с которой я сталкиваюсь, заключается в том, что Celery определенно относится к тому, как он сам структурирован, поэтому попытки реструктурировать каталог только что привели ксельдерей не в состоянии начать.Я не совсем уверен, почему тесты терпят неудачу только в сборке докера, которая выглядит так:

FROM google/cloud-sdk:198.0.0-alpline
COPY . /project
WORKDIR /project
RUN apk add --no-cache python3 python3-dev && pip3 install -r requirements.txt
RUN nose2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...