First,30.05.2025, Project, Structures, Giga
https://giga.chat/link/gcsJhXtnzn
Структура проекта, управление зависимостями, настройка окружения: обзор и лучшие практики // ДЗ
Цели занятия
разобрать стандартный шаблон структуры Python проекта;
рассмотреть различные инструменты по управлению зависимостями;
научиться создавать удобное окружение для разработки.
Краткое содержание
шаблон структуры проекта;
Makefile;
управление зависимостями, setup.py,pyproject.toml, poetry;
versioning, vendoring;
обзор инструментов и библиотек для настройки окружения;
pre-commit hooks;
gitlab CI, github actions.
------------------------------------------------------------------------------------------
Хороший проект на Python имеет четкую структуру каталогов и файлов, которая облегчает поддержку, масштабирование и понимание проекта разными разработчиками. Вот стандартная структура проекта на Python:my_project/
├── README.md # Описание проекта
├── LICENSE # Лицензия (например, MIT)
├── .gitignore # Файл для игнорирования ненужных файлов Git'ом
├── requirements.txt # Список зависимостей проекта
├── setup.py # Скрипт установки пакета (опционально)
├── Dockerfile # Для контейнеризации приложения (опционально)
├── src/ # Каталог исходников
│ ├── __init__.py # Пустой файл для инициализации пакета
│ ├── main.py # Основной исполняемый скрипт программы
│ ├── app/ # Основные модули приложения
│ │ ├── __init__.py
│ │ ├── config.py # Конфигурационные файлы
│ │ ├── utils.py # Вспомогательные функции
│ │ └── services.py # Логика сервиса или бизнес-логики
│ ├── tests/ # Тестовые сценарии
│ │ ├── __init__.py
│ │ ├── test_app.py # Модульные тесты основных модулей
│ │ └── integration_tests.py # Интеграционные тесты
│ └── data/ # Статические данные, используемые проектом
│ ├── raw_data.csv # Исходные данные
│ └── processed_data.json # Обработанные данные
├── docs/ # Документация проекта
│ ├── architecture.md # Архитектурная документация
│ ├── api_docs.md # API-документация
│ └── user_guide.md # Руководство пользователя
├── logs/ # Лог-файлы приложения
└── venv/ # Изоляционная среда виртуального окружения (не коммитится)----------------------------------------------------------------------------------Такая структура позволяет поддерживать порядок в проекте, облегчая навигацию и поддерживаемость. Она подходит как для небольших проектов, так и крупных приложений.Файл __init__.py служит специальным маркером для интерпретатора Python, сообщающим,
что папка является пакетом Python.
Это значит, что каталог можно импортировать в другие части программы.
Например, рассмотрим следующую структуру каталога:
my_package/ ├── __init__.py ├── module1.py └── subpackage/ ├── __init__.py └── module2.py
При наличии файла __init__.py, каталог my_package становится пакетным модулем,
доступным для импорта следующим образом:
import my_package.module1 from my_package.subpackage import module2
-----------
Что можно поместить внутрь файла __init__.py?
- Пустое содержимое:
- Если этот файл пустой, то Python автоматически делает каталог пакетом.
- Инициализация пакета:
- Можно добавить любую начальную логику, необходимую для подготовки пакета перед использованием
- (например, подключение конфигураций или настройка переменных среды).
- Импорт внутренних модулей:
- Иногда удобно импортируемые модули объявлять прямо внутри
__init__.py. - # Содержимое __init__.py from .module1 import function1 from .subpackage.module2 import class2
- Например:
- # Содержимое __init__.py from .module1 import function1 from .subpackage.module2 import class2
Таким образом, пользователи смогут обращаться напрямую к содержимому модуля, используя сокращенный синтаксис:from my_package import function1, class2
Комментариев нет:
Отправить комментарий