Circle-CI ImportError: не удалось импортировать тестовый модуль Python 3.7.0 - PullRequest
0 голосов
/ 04 марта 2020

Я впервые пытаюсь настроить Circle-CI для своего приложения. Это приложение на python 3.7.0 с несколькими тестами. Приложение прекрасно собирается, но не запускается при выполнении тестового задания. Локально тесты работают нормально, поэтому я предполагаю, что мне не хватает конфигурации Circle-CI?

Это мой yaml:

version: 2.0
jobs:
  build:
    docker:
      - image: circleci/python:3.7.0
    steps:
      - checkout
      - run:
          name: "Run tests"
          command: python -m unittest

Это ошибка:

=============================================== =======================

ОШИБКА: tests.test_auth (unittest.loader._FailedTest)

ImportError: Ошибка импортировать тестовый модуль: tests.test_auth Traceback (последний вызов был последним): файл "/usr/local/lib/python3.7/unittest/loader.py", строка 434, в _find_test_path module = self._get_module_from_name (name) ) Файл "/usr/local/lib/python3.7/unittest/loader.py", строка 375, в _get_module_from_name import (имя) файла "/ home / circleci / project / tests / test_auth .py ", строка 5, из werkzeug.datastructures import MultiDict ModuleNotFoundError: Нет модуля с именем 'werkzeug'

Что мне не хватает?

РЕДАКТИРОВАТЬ:

Я добавил pip install -r requirements.txt, но теперь получаю:

Не удалось установить пакеты из-за EnvironmentError * 10 29 *: Errno 13] В доступе отказано: '/usr/local/lib/python3.7/site-packages/MarkupSafe-1.1.1.dist-info'

РЕДАКТИРОВАТЬ :

В дополнение к ответу приведена полная конфигурация yaml:

version: 2.0
jobs:
  build:
    docker:
      - image: circleci/python:3.7.0
    steps:
      - checkout
      - run:
          name: "Install dependencies"
          command: |
            python3 -m venv venv
            . venv/bin/activate
            pip install --upgrade pip
            pip install --no-cache-dir -r requirements.txt
      - run:
          name: "Run tests"
          command: |
            . venv/bin/activate
            python -m unittest

1 Ответ

1 голос
/ 04 марта 2020

Это просто означает, что зависимость 'werkzeug' не установлена. Возможно, вам потребуется установить дополнительные пакеты, которые требуются отдельно.

Попробуйте добавить установки зависимостей в Dockerfile, как показано ниже:

RUN pip install --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt

Если вы получаете проблемы с отказом в разрешении, тогда ваши тесты запускаются с пользователем, который не имеет прав для управления python. Но вряд ли так будет.

...