Код: Выделить всё
hyperMVP/
├── src/
│ ├── __init__.py
│ ├── afrr/
│ │ ├── __init__.py
│ │ ├── dumper.py
│ │ └── cleaner.py
│ ├── config.py
│ ├── tests/
│ │ ├── afrr/
│ │ │ ├── __init__.py
│ │ │ └── test_afrr_dumper.py
Код: Выделить всё
src/afrr/dumper.py
Код: Выделить всё
import os
import pandas as pd
from datetime import datetime
from src.config import PROCESSED_DIR # Ensure PROCESSED_DIR is defined in src/config.py
Код: Выделить всё
src/tests/afrr/test_afrr_dumper.py
Код: Выделить всё
from afrr.dumper import dump_afrr_data
from src.config import PROCESSED_DIR
Код: Выделить всё
ModuleNotFoundError: No module named 'src'
- Настройка PYTHONPATH:
Проверено с помощью echo %PYTHONPATH%, но ошибка сохраняется при запуске теста:
Код: Выделить всё
set PYTHONPATH=src
Код: Выделить всё
pytest src/tests/afrr/test_afrr_dumper.py
- Добавление __init__.py:
- Добавлены файлы __init__.py в следующие каталоги, чтобы гарантировать, что они обрабатываются как пакеты:
Код: Выделить всё
src/ src/afrr/ src/tests/afrr/
- Добавлены файлы __init__.py в следующие каталоги, чтобы гарантировать, что они обрабатываются как пакеты:
- Установка проекта в виде пакета:
- Создал файл setup.py:
Код: Выделить всё
from setuptools import setup, find_packages setup( name="hypermvp", version="0.1", packages=find_packages(where="src"), package_dir={"": "src"}, install_requires=[ "pandas>=1.0.0", ], )
- Установил проект с помощью:
Код: Выделить всё
pip install -e .
- Создал файл setup.py:
- Перемещение тестовых файлов[/b]:< /p>
- Переместил test_afrr_dumper.py в src/ и запустил:
По-прежнему обнаружена та же ошибка ModuleNotFoundError.
Код: Выделить всё
pytest src/test_afrr_dumper.py
- Переместил test_afrr_dumper.py в src/ и запустил:
Каталог src должен распознаваться как корневой пакет, а импортируемые файлы — в test_afrr_dumper.py должно решиться без проблем. Например, импорт PROCESSED_DIR из src.config должен работать без проблем.
Фактическое поведение
Несмотря на это пробуя все вышеперечисленное, Python постоянно не распознает src как модуль и выдает сообщение «ModuleNotFoundError: нет модуля с именем «src».
Сведения о среде
- ОС: Windows 10
- Версия Python: 3.12.8
- Виртуальная среда: venv, созданная с помощью python -m venv
- Установлено Зависимости:
Код: Выделить всё
pandas
Код: Выделить всё
pytest
- Другие стандартные библиотеки.
Публичный репозиторий
https://github.com/hilbertp/hypermvp
Вопросы
- Как правильно настроить проект, чтобы что src рассматривается как корневой модуль для импорта?
- Чего мне не хватает с точки зрения разрешения пакетов/модулей Python?
- Есть ли более структурное и постоянное решение этой проблемы, не требующее установки PYTHONPATH вручную?
Подробнее здесь: https://stackoverflow.com/questions/793 ... on-project