popov . dev

Main

Library

Articles

Организация стру...

Организация структуры проекта на Python

Создание хорошо организованной структуры для проекта на Python имеет решающее значение для того, чтобы сделать кодовую базу управляемой, масштабируемой и понятной как отдельным разработчикам, так и командам.

В этом руководстве мы пошагово рассмотрим процесс структурирования проекта на Python, с объяснениями лучших практик и примерами, иллюстрирующими каждый шаг.

Шаг 1: Создайте корневой каталог проекта

Начните с каталога, который будет содержать все файлы, относящиеся к вашему проекту.

Название каталога должно быть описательным и содержательным, в идеале это должно быть название вашего проекта.

Пример

my_project/

Шаг 2: Создайте виртуальную среду

Виртуальная среда изолирует зависимости вашего проекта от других проектов, помогая избежать конфликтов версий.

Создание среды под Linux/macOS

cd my_project
python3 -m venv venv

Для Windows

python -m venv venv

После создания активируйте его:

  • Linux/macOS: source venv/bin/activate
  • Windows: venv\Scripts\activate

Теперь ваши зависимости будут установлены в этой среде.

Шаг 3: Определите основную структуру каталогов

Структура вашего ядра проекта должна включать каталог для вашего пакета или модуля, каталог tests/ и файлы установки, конфигурации в корне.

Пример

my_project/
│
├── my_package/           # Основной каталог пакетов
│   ├── __init__.py       # Превращает каталог в пакет
│   ├── module1.py
│   ├── module2.py
│   └── utils.py
│
├── tests/                # Тесты для каждого модуля или функциональности
│   ├── __init__.py
│   ├── test_module1.py
│   ├── test_module2.py
│   └── test_utils.py
│
├── venv/                 # Каталог виртуальной среды (игнорируется в .gitignore)
│
├── requirements.txt      # Список зависимостей проекта
│
└── README.md             # Описание проекта и его использование

Описание каждого компонента

  • my_package/: Содержит основной код вашего проекта.
  • tests/: Содержит модульные тесты для каждого модуля, которые помогут с проверкой кода.
  • requirements.txt: Выводит список зависимостей. Сгенерируйте его с помощью pip freeze > requirements.txt.
  • README.md: Описывает проект и инструкции по использованию, которые помогают другим понять, как им пользоваться.

Шаг 4. Написание файла __init__.py

Файл __init__.py используется для инициализации пакета Python. Поместите его в каждый каталог, который вы хотите рассматривать как пакет.

Этот файл также может определять, что импортируется при импорте пакета.

Пример __init__.py для my_package/

# my_package/__init__.py
from .module1 import function1
from .module2 import function2

Теперь вы можете напрямую использовать from my_package import function1

Шаг 5: Добавьте конфигурационные файлы

Некоторые конфигурационные файлы помогают автоматизировать тестирование, компоновку и развертывание.

1. .gitignore

Добавьте файл .gitignore, чтобы указать файлы и каталоги, которые Git должен игнорировать.

Пример .gitignore:

venv/
__pycache__/
*.pyc

2. requirements.txt

Для управления зависимостями необходим список пакетов в requirements.txt:

pip install some_package
pip freeze > requirements.txt

Шаг 6: Подготовка тестов

Для тестирования используйте pytest или unittest. Для начала создайте файлы тестов в каталоге tests/.

Пример файла теста tests/test_module1.py

# tests/test_module1.py

import pytest
from my_package.module1 import function1

def test_function1():
    result = function1()
    assert result == expected_output  # заменить на фактический ожидаемый результат

Запуск тестов из терминала:

pytest tests/

Шаг 7: Создайте setup.py для упаковки (необязательно)

Если вы хотите распространять свой пакет, добавьте файл setup.py, который сообщает Python, как собрать и установить пакет.

Пример setup.py

from setuptools import setup, find_packages

setup(
    name="my_project",
    version="0.1",
    packages=find_packages(),
    install_requires=[
        "some_package>=1.0.0",
    ],
)

Чтобы установить пакет локально:

pip install -e .

Это позволяет импортировать my_package без указания полного пути.

Шаг 8: Документируйте проект

Документация облегчает другим (и вам самим) понимание и использование проекта.

Обновите README.md, чтобы предоставить обзор, инструкции по установке и примеры использования.

Пример README.md

# Мой проект

## Описание
Этот проект делает определенные действия.

## Установка
1. Склонируйте репозиторий.
2. Установите зависимости: `pip install -r requirements.txt`.

## Использование
```python
from my_package import function1
function1()

Такая структура упорядочивает вашу кодовую базу, упрощая ее разработку, тестирование и сопровождение.

Comments

In order to leave your opinion, you need to register on the website