Показаны сообщения с ярлыком Structures. Показать все сообщения
Показаны сообщения с ярлыком Structures. Показать все сообщения

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

First, Part2 , 30.05.2025, Project, Structures, Giga

First, Part2 , 30.05.2025, Project, Structures, Giga

https://giga.chat/link/gcsbKolIqu

Структура проекта Python

Проектная структура — важный аспект разработки программного обеспечения на Python.

Грамотно организованная структура облегчает разработку, тестирование и поддержку приложения.

Рассмотрим стандартную структуру проекта на примере небольшого веб-приложения.

Типичная структура проекта Python:

my_project/ │ # Файлы верхнего уровня ├── README.md # Описание проекта ├── requirements.txt # Список зависимостей проекта ├── setup.py # Скрипт установки пакета ├── Makefile # Автоматизация сборки/развертывания ├── .gitignore # Исключаемые файлы для системы контроля версий Git │ ├── my_app # Основной пакет приложения │ ├── __init__.py # Пустой файл для обозначения папки как пакета │ ├── main.py # Главная точка входа в приложение │ ├── config.py # Конфигурационные настройки │ └── models.py # Модели данных (например, ORM) │ ├── tests # Директория для тестов │ ├── test_main.py # Тестирование главной точки входа │ └── test_models.py # Тестирование моделей данных │ ├── docs # Документация проекта │ ├── index.rst # Индекс документации (Sphinx) │ └── conf.py # Настройки конфигурации документаций │ └── logs # Лог-файлы приложения

Разбор структуры:

  • README.md: Краткое руководство по проекту, инструкции по установке и запуску.
  • requirements.txt: Перечисление всех необходимых библиотек и модулей для запуска приложения.
  • setup.py: Инструмент для упаковки и распространения вашего приложения в виде модуля Python.
  • .gitignore: Файл, определяющий правила игнорирования файлов и директорий системой контроля версий Git.
  • Makefile: Удобный инструмент автоматизации рутинных действий, таких как сборка, тесты, деплоймент.
  • my_app: Главный каталог приложения, содержащий весь код проекта.
  • tests: Каталог для хранения тестовых сценариев.

  • docs: Документированная информация о проекте,
  • используемая для генерации HTML-документации с помощью инструментов вроде Sphinx.
  • logs: Папка для хранения лог-файлов приложений.
----

Для больших проектов важно придерживаться некоторых правил:

  1. Модульность:
  2. Код разбивается на небольшие модули, каждый из которых решает свою отдельную задачу.
  3. Это позволяет легче поддерживать проект и улучшает читаемость.
  4. Использование виртуальных сред (venv):
  5. Каждый проект лучше держать изолированным от других путем использования виртуальной среды Python.
  6. Так проще управлять зависимостями и избегать конфликтов между проектами.
  7. Разделение на слои:
  8. Проект делится на логические уровни: модели данных, бизнес-логика, контроллеры, представления и шаблоны.
  9. Например, в Django такая архитектура поддерживается автоматически.
  10. Автоматизированные тесты:
  11. Чем больше проект, тем важнее наличие автоматизированных тестов,
  12. обеспечивающих проверку работоспособности каждого компонента.
  13. Документирование:
  14. Подробная документация значительно упрощает понимание и развитие проекта. Она должна содержать описание API,
  15. руководства по настройке и использованию функционала.

Таким образом,

грамотная организация структуры проекта помогает создавать масштабируемые и поддерживаемые проекты на Python.

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