воскресенье, 1 июня 2025 г.

First,30.05.2025, Project, Structures, Giga

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

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

Отправить комментарий