Глава 23 · Часть III · Создаём Python-проект

Планируем структуру Python-пакета

src-раскладка: пакет лежит в src/safesort/, а не в корне репозитория — и почему это осознанный выбор, а не догма.

SafeSort · Часть 3 из 6Проект

Хаотичная структура каталогов не мешает программе работать, но мешает её понимать, тестировать и устанавливать как пакет. Пока код не написан, зафиксируем только каркас — и добавим в него по одному файлу за раз, когда для него появится задача.

safesort/НОВОЕ
README.md
pyproject.tomlНОВОЕ
src/НОВОЕ
safesort/НОВОЕ
__init__.pyНОВОЕ
tests/НОВОЕ
Каркас исходного дерева проекта: src/safesort/ содержит импортируемый пакет, pyproject.toml — метаданные проекта и настройки системы сборки, а tests/ — проверки.

Исходный код лежит внутри src/, а не прямо в корне репозитория — это называют src-раскладкой (src layout). Без этого уровня установленный пакет и каталог исходников совпадали бы, и было бы легко по ошибке протестировать не тот код, что реально установлен — например, если забыть переустановить пакет после правки файла.

src/safesort/
__init__.py
scanner.py
classifier.py
planner.py
executor.py
cli.py
duplicates.py
manifest.py
config.py
Эти файлы появятся позже, когда для них появится задача — запоминать их сейчас не нужно.

Коротко

  • Пакет пока состоит только из README.md, pyproject.toml, src/safesort/__init__.py и tests/.
  • src-раскладка кладёт исходный код в src/safesort/, а не в корень репозитория, — так тесты не могут случайно обратиться к неустановленному коду.
  • Остальные модули появятся по одному, каждый — когда для него будет конкретная задача.