Часто код программы разбит на несколько текстовых файлов с расширением языка. Эти файлы, их еще называют модули, принято собирать в пакет, общий проект. Для управления пакетами существуют специальные утилиты пакетные менеджеры. Они позволяют создавать новые проекты, устанавливать сторонние пакеты и выкладывать наш проект на Github и другие репозитории.
В нашем курсе в качестве пакетного менеджера мы будем использовать утилиту uv
Установим ее по инструкции с сайта:
curl -LsSf https://astral.sh/uv/install.sh | sh
Если способ выше не работает, то можете попробовать другие способы установки в нашей инструкции
После установки проверьте, что утилита работает
uv --version
uv 0.4.30
uv
выполняет множество важных задач, с которыми мы будем знакомиться в течение курса. Сейчас нас интересует ее базовое использование – создание, инициализация, нового проекта.
Для создания нового проекта нужно выполнить две вещи:
- Создать директорию проекта – место, внутри которого будут располагаться все файлы с кодом. Эта директория называется корнем проекта.
- Запустить команду инициализации
uv init
в корне проекта.
# Создание директории
mkdir hexlet-hello-world
# Переход внутрь директории
cd hexlet-hello-world
# Инициализация проекта
# init – означает initialization
uv init
Initialized project `hexlet-hello-world`
В результате менеджер создаст такую структуру директорий
.
├── .python-version
├── hello.py
├── pyproject.toml
└── README.md
По умолчанию uv
создает шаблонный файл hello.py. Удалим его и создадим поддиректорию нашего проекта hexlet_hello_world.
.
├── hexlet_hello_world
├── pyproject.toml
├── .python-version
└── README.md
Такая структура разделяет компоненты с рабочим кодом от общих компонентов настройки проекта. Так все модули нашего приложения будут лежать в директории проекта hexlet_hello_world
. А все файлы конфигурации проекта лежат в корне.
Среди этих файлов README.md - текстовое описание нашего проекта, .python-version - файл с указанием версии Python, нужен для установки проекта, и pyproject.toml - файл с описанием метаданных и настроек нашего проекта. Рассмотрим его подробнее.
[project]
name = "hexlet-hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []
pyproject.toml — это текстовый файл, внутри которого данные хранятся в TOML формате. Строчки вида [project]
описывают секции с парами "ключ = значение»". В примере выше значением ключа name
будет "hexlet-hello-world"
.
Самая важная секция для нас сейчас - [project]
. В ней описываются общие данные проекта. Здесь хранится версия version
, описание description
, название name
. Также указана требуемая версия Python requires-python
и список зависимостей dependencies
. О них поговорим позже.
После завершения процесса инициализации можно приступать к самому главному — написанию кода. Откроем наш проект в редакторе, это можно сделать командой code .
и создадим в директории hexlet-hello-world новый файл example.py. Добавим в него строчку print("Hello from python project!")
и запустим. Запускать код нужно обязательно из корневой директории проекта, указывая полный путь от нее до файла.
# указываем полный путь до файла
python3 hexlet_hello_world/example.py
Самостоятельная работа
- Создайте новый проект hexlet-hello-world
- Изучите файл pyproject.toml
- Создайте поддиректорию hexlet-hello-world проекта, в которой будет храниться весь код проекта
- Создайте в ней новый модуль example.py и добавьте в него строчку
print("Hello from python project!")
- Запустите его командой из урока
- Добавьте все изменения на Github
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.