Comments 10
Основной фокус с Rust, который недоступен в Python состоит в том, что Cargo это дефолт. А poetry/uv/rye это очередной 15й стандарт из того знаменитого комикса.
Все эти, без сомнения, значимые проекты сработают в момент, когда pip и virtualenv будут признаны устаревшими и удалены из всевозможных поставок.
Poetry начал переодически подкидывать "приколы". Чувствую переход на uv точно не избежен) А на rey поглядим, интересно
Как выпустили 2-ю версию poetry обновился и у меня всё сломалось)) т.к. всё завязано на автоэкспорт было, в контейнере всё ставилось уже через pip. В итоге перешел на uv и очень рад - работает быстро.
Недавно перевели один проект на uv в рамках теста. Скорость сборки выросла в разы, теперь тоже думаем перебрать всё остальное.
Вообще выглядит, будто рано или поздно ruff с uv вытеснят старые инструменты и может быть все сопутствующие компоненты Python перепишут на Rust.
Мне очень сильно нравится uv. Он очень быстрый и универсальный. А ещё может работать абсолютно на любой нулевой чистой системе вообще без какого-либо питона. Берём всего лишь один исполняемый elf/exe файл uv, Запускаем Через него наш проект или наш скрипт (uv run --script), реально проходит буквально 4 секунды, не больше, он и питон нужный самостоятельно скачивает, и зависимостью и все это дело запускается и очень хорошо работает. По факту, это можно даже использовать вместо pyinstaller, Для распространения наших desktop приложений до конечных пользователей. Я пробовал, всё отлично работает и без каких-либо проблем. Можете даже сами попробовать. Создать виртуальную машину с чистой Windows, где вообще полностью ничего нет. Положить туда всего лишь один единственный файл uv.exe И запустить через него ваш проект. И вы приятно удивитесь
можно использовать Multi-stage сборку. Образ билдера:
ARG PYTHON_VERSION=3.13
FROM python:${PYTHON_VERSION}-alpine
ENV PIP_DEFAULT_TIMEOUT=100
PIP_DISABLE_PIP_VERSION_CHECK=1
PIP_NO_CACHE_DIR=1
POETRY_VERSION=2.1.1
PYTHONUNBUFFERED=1
ENV PATH="/root/.local/bin:${PATH}"
RUN apk add --no-cache gcc alpine-sdk linux-headers &&
wget https://install.python-poetry.org -O - | python3 - &&
poetry self add poetry-plugin-bundle
Образ приложения:
ARG PYTHON_VERSION=3.13
FROM python-poetry-builder:python${PYTHON_VERSION} AS builder
WORKDIR /usr/src/app
COPY pyproject.toml ./
COPY src/. ./src
RUN poetry lock &&
poetry bundle venv --only=main /venv -vvv
FROM python:${PYTHON_VERSION}-alpine
COPY --from=builder /venv /venv
ENTRYPOINT ["/venv/bin/app"]
Вместо COPY poetry.lock он почему-то создаётся заново. Весь его смысл теряется
так и было задумано. при конфигурации версия зависимостей фиксируется на мажорной-минорной версии. простая пересборка контейнера подтянет новую патч версию при наличии
Information
- Website
- idaproject.com
- Registered
- Founded
- 2013
- Employees
- 201–500 employees
- Location
- Россия
- Representative
- Egor
Быстрее, выше, сильнее: сравнение подходов poetry, rye и uv