Не удается импортировать скрипт из репозитория в pytest с помощью действий GitHub

#python #github #yaml #pytest #github-actions

Вопрос:

Я учусь реализовывать автоматическое тестирование с помощью действий на GitHub. Я пытаюсь решить следующую ошибку импорта.

Ошибка в том, что:

 utilstest_capitalize.py:2: in <module>
    from src.capital import capital_case
E   ModuleNotFoundError: No module named 'src'
 

Структура моего репозитория такова:

 example/
|-- setup.cfg
|-- setup.py
|-- pyproject.toml
|-- .github/
|   |-- workflows/
|   |   |-- ci.yml
|-- src/
|   |-- capital.py
|-- utils/
|   |-- test_capitalize.py
 

Содержание ci.yml является:

 name: ci

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build-and-test:

    runs-on: windows-latest
    strategy:
      matrix:
        python-version: [3.8]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Build
        run: |
          python -m pip install .
          python -m pip install src
      - name: Test with pytest
        run: |
          python -m pip install pytest
          pytest
 

Я думал, что python -m pip install . уже установил все модули в репозитории, у меня есть неправильное представление об этом?.

Редактировать: Файл pytest является минимальным примером (я попытался удалить src перед нажатием):

 import pytest
from src.capital import capital_case


def test_capital_case():
    assert capital_case('semaphore') == 'Semaphore'
 

Комментарии:

1. Вы никогда не должны иметь src в своих входных инструкциях. Это должно быть from capital import capital_case в коде. Удалите также python -m pip install src строку ci.yml , строка над ней является правильной для использования.

2. В таком случае у меня все та же проблема. Сообщение об ошибке выглядит так ModuleNotFoundError: No module named 'capital'

3. Я предполагаю, что этого нет в списке setup.py. Добавьте py_modules=[‘capital’] в вызове настройки.

4. Да, это было причиной проблемы, спасибо