текст перекладу
Це працює на моїй машині!
Фраза, яку кожен розробник ненавидить говорити. Ваш додаток Django працював бездоганно в розробці, але як тільки він потрапив у продакшн, все пішло не так. Одна неправильна версія пакету може перетворити вашу п’ятничну розгортку на марафон налагодження на вихідних.
Якщо ви коли-небудь розгортали проект Django, то знаєте, що керування залежностями може бути однією з найскладніших частин. Одна неправильна версія, і ви зіткнетеся з дивними помилками, простоями або годинами розчарування в спробах зрозуміти, що пішло не так. Ось чому інструменти на зразок Poetry стають справжньою знахідкою. Вони позбавляють вас зайвих клопотів з керуванням залежностями, роблячи ваші розгортання більш гладкими та передбачуваними.
У цій статті я покажу вам, як налаштувати та конфігурувати Poetry для вашого проекту Django. Розгляньте це як перший крок до того, щоб зробити процес розгортання не просто простішим, а й стабільним.
Чому Poetry?
Хоча традиційні інструменти, як pip
і virtualenv
, добре виконують свою роботу, вони мають свої обмеження. Керування файлом requirements.txt
вручну або вирішення конфліктів версій можуть стати головним болем, коли ваш проект зростає. Poetry спрощує цей процес, виконуючи наступне:
- Автоматичне вирішення залежностей: Вирішує конфлікти та забезпечує сумісність.
- Фіксація версій: Створює файл
poetry.lock
, який фіксує точні версії для відтворюваності. - Управління віртуальними середовищами: Автоматично створює та активує ізольовані середовища.
Налаштування Poetry для проекту Django
Давайте розпочнемо налаштування Poetry для вашого проекту Django.
1. Встановіть Poetry
Спочатку встановіть Poetry на вашу локальну машину. Використовуйте офіційний інсталятор для зручності:
curl -sSL https://install.python-poetry.org | python3 -
Перевірте встановлення:
poetry --version
2. Ініціалізуйте Poetry у вашому проекті Django
Перейдіть до вашої директорії проекту та ініціалізуйте Poetry:
cd /path/to/your-django-project
poetry init
Poetry запитає вас про конфігурацію вашого проекту. Наприклад:
- Назва пакету:
your_project_name
- Версія:
0.1.0
- Опис: Django проект для автоматизації розгортань
- Ліцензія: MIT (або за вашим вибором)
- Залежності: Пропустіть зараз, додамо їх вручну.
Це створить файл pyproject.toml
, який є основним конфігураційним файлом для Poetry.
3. Додайте залежності
Додайте Django та інші необхідні залежності до вашого проекту:
poetry add django gunicorn psycopg2-binary
Це:
- Встановить зазначені пакети.
- Оновить файл
pyproject.toml
з залежностями. - Заблокує версії у файлі
poetry.lock
.
4. Додайте залежності для розробки
Для інструментів розробки, таких як лінтери та фреймворки для тестування, використовуйте:
poetry add --group dev black flake8 pytest
Це забезпечить, щоб ці залежності не потрапили в продакшн.
5. Управління віртуальним середовищем
За замовчуванням Poetry управляє віртуальними середовищами для вас. Активуйте середовище:
poetry shell
Запускайте команди Django в цьому середовищі:
python manage.py runserver
Налаштування Poetry для розгортання
Тепер, коли Poetry налаштовано, давайте налаштуємо його для розгортання.
1. Виключіть залежності для розробки
Забезпечте, щоб під час розгортання встановлювались лише залежності для продакшн:
poetry install --no-dev
2. Заблокуйте версії для узгодженості
Завжди використовуйте файл poetry.lock
у ваших розгортаннях, щоб забезпечити встановлення однакових версій у різних середовищах:
poetry lock
Закомітьте файл poetry.lock
у систему контролю версій.
3. Автоматизуйте встановлення залежностей
Включіть установку залежностей у вашому сценарії розгортання:
#!/bin/bash
echo "Installing dependencies..."
poetry install --no-dev
Інтеграція Poetry з Django
Poetry спрощує інтеграцію з Django, підтримуючи чисте віртуальне середовище.
текст перекладу
Оновіть файли manage.py
та wsgi.py
, щоб забезпечити їх безперешкодну роботу в середовищі Poetry.
Приклад: Оновлення Python шляху в manage.py
Якщо віртуальне середовище Poetry не виявляється автоматично, явно додайте його:
import os
import sys
if os.getenv("POETRY_ACTIVE"):
sys.path.append(os.path.join(os.path.dirname(__file__), "venv/lib/python3.x/site-packages"))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Вирішення конфліктів залежностей
Конфлікти залежностей можуть виникнути, коли різні пакети вимагають несумісні версії. Вирішуйте їх за допомогою потужного резольвера Poetry:
- Перевірте наявність конфліктів:
poetry check
- Оновіть залежності для вирішення проблем:
poetry update
- Явно вкажіть версії, якщо це необхідно:
poetry add [email protected]
Використання Poetry в CI/CD Pipelines
При розгортанні вашого проекту Django з такими інструментами, як GitHub Actions, інтегруйте Poetry для керування залежностями:
Приклад фрагмента GitHub Actions
- name: Install Poetry
run: curl -sSL https://install.python-poetry.org | python3 -
- name: Install Dependencies
run: poetry install --no-dev
Загальні команди Poetry на одному погляді
- Додати залежність:
poetry add
- Додати dev-залежність:
poetry add --group dev
- Встановити залежності:
poetry install
- Оновити залежності:
poetry update
- Активувати віртуальне середовище:
poetry shell
Переваги Poetry при розгортанні
З Poetry:
- Ваші розгортання передбачувані завдяки файлу
poetry.lock
. - Залежності управляються чисто в ізольованих середовищах.
- Ви витрачаєте менше часу на налагодження проблем з залежностями і більше часу на відправку нових функцій.
У наступній статті ми напишемо повний сценарій розгортання, який поєднає Poetry, міграції бази даних і перезавантаження серверів. Залишайтеся з нами, і ми наближаємося до повністю автоматизованих розгортань Django!
Перекладено з: Automating Django Deployments: Poetry Setup and Configuration