Перейти до основного вмісту
Інструмент Python2026-07-31 · 9 хв читання

Віртуальні середовища Python у 2026 році: venv, uv, pipx, poetry — коли використовувати які

У кожному підручнику з Python говориться «використовуйте віртуальне середовище» і йде далі. У цьому випадку ми докладаємо додаткових зусиль: що насправді ТАКЕ venv, чотири інструменти, які варто знати у 2026 році, 60-секундне дерево рішень для вибору правильного та дві помилки, які порушують налаштування протягом тижня.

Що таке віртуальне середовище насправді

venv — це каталог, що містить символічне посилання інтерпретатора Python плюс приватні `site-packages/`. Коли він «активований», PATH додає <venv>/bin, тому python і pip у вашій оболонці вказують на копії venv. pip install X записує в site-packages/ venv, а не в системний Python.

Ось і все. Ніякої магії. Це папка з символічним посиланням і pyvenv.cfg.

BASH
$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2

Усе інше (активація сценаріїв, обгорток, менеджерів пакунків) є зручністю на додаток до цієї форми.

Чому він потрібен завжди

Без venv pip install X записує у ваш системний site-packages/ Python. Три проблеми:

1. Конфлікти. Проект A потребує django==4.2; Проект B потребує django==5.1. Неможливо без venvs.

2. Відтворюваність. «Працює на моєму комп’ютері» — це системна проблема Python. Знімок venv ЦЕ середовище.

3. Очищення. Видалити проект? Видаліть папку venv. Встановлення System-Python накопичуються вічно.

У macOS 12+ і більшості дистрибутивів Linux system-Python тепер належить ОС — pip може навіть відмовитися від встановлення без --break-system-packages. Це підказка.

4 інструменти, про які варто знати

1. venv — базова лінія stdlib

Поставляється з кожною інсталяцією Python 3.3+. Нуль залежностей. Універсальний запасний варіант:

BASH
python -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell

Використовуйте, коли: написання підручника, перевірка того, що сценарій працює всюди, або в заблокованому CI, де ви не можете нічого інсталювати.

2. uv — сучасне значення за замовчуванням (2026)

Іржаве написання, в 10-100 разів швидше, ніж pip. Замінює venv + pip + pip-tools + pyenv-download-python. Перегляньте наш uv-deep-dive для повного огляду.

BASH
uv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says

Використовуйте, коли: будь-який проект 2026 — соло, команда, CI, Docker. Різниця швидкості в холодному кеші є реальною (45 с пунктів → 2 с UV у типовому проекті Django).

3. pipx — для інструментів CLI

Коли ви встановлюєте CLI, як-от ruff, httpie, black, youtube-dl, mypy, ви не хочете, щоб він був у вашому проекті venv (чому покладатися на ruff для роботи import project.things?). І ви не хочете цього в системі Python (конфлікти). pipx поміщає кожен у свій власний ізольований venv, але надає CLI глобально:

BASH
pipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .

Використовуйте, коли: встановлення CLI на основі Python. Емпіричне правило: pipx install X, якщо X надсилає виконуваний файл, який ви запускаєте з будь-якого проекту; uv pip install X, якщо X є бібліотекою, яку ви імпортуєте.

Сучасна заміна: uv tool install ruff робить те саме без окремого встановлення pipx. Виберіть будь-яке.

4. poetry — зрілий блок залежностей (знижується частка)

До появи ультрафіолету «поезія» була основним інструментом для сучасного пакування. Чудовий засіб вирішення залежностей, детермінований poetry.lock, тісна інтеграція з pyproject.toml. Все ще стабільно, але повільніше, ніж УФ, і додає когнітивних витрат.

BASH
poetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish

Використовуйте, коли: наявний проект уже використовує поезію або вам потрібні спеціальні додатки для поезії (наприклад, poetry-plugin-export). Для НОВИХ проектів у 2026 році uv приведе вас швидше з меншою площею.

60-секундне дерево прийняття рішень

▶ PYTHONeditable · runs in your browser

Ось і все. 90% розробників Python сьогодні можуть вибирати з цього списку, не потребуючи pyenv, virtualenvwrapper, pew або conda.

Conda — окремий випадок

conda — це окремий всесвіт: менеджер пакунків + менеджер venv + дистрибутор Python + менеджер C-бібліотек, переважно для наукового Python. Якщо ви виконуєте важку чисельну роботу зі стеками numpy / scipy / pandas / GPU, які потребують узгоджених версій CUDA + cuDNN, miniconda все ще може того варти — попередньо скомпільовані двійкові файли економлять години порівняно з pip.

В іншому випадку: звичайний uv тепер конкурентоспроможний і на наукових стеках (встановлення numpy / pandas займають секунди, а не хвилини). Не тягніться до conda, якщо вам спеціально не потрібна зв’язка C-бібліотеки, яку неможливо створити.

Дві помилки, які порушують налаштування протягом тижня

1. Закріплення .venv/ для git

Venv містить:

  • Абсолютні шляхи до вашої конкретної інсталяції Python.
  • Скомпільовані файли .pyc.
  • Двійкові файли, які залежать від ОС.

Зафіксуйте це → ваш напарник у Windows не може нічого запускати. СПОЧАТКУ додайте .venv/ (і venv/, .env/) до .gitignore, а потім створіть venv.

2. Активація в неправильній оболонці

source .venv/bin/activate встановлює змінні env лише в ПОТОЧНІЙ оболонці. Якщо ви відкриєте нову вкладку терміналу, ви повернетеся до системи Python. Дві безпечні моделі:

1. Повторно активувати кожен сеанс — стандартний потік.

2. `uv run` / `poetry run` / `python -m project` — ніколи не активувати взагалі. Виконуйте команди зі свіжої оболонки з префіксом інструменту. Чудово підходить для Makefiles, CI, npm-скриптів, git-хуків.

Правило для сценаріїв: якщо це однорядковий запуск із CI або Makefile, НЕ активуйте — використовуйте uv run pytest або повний шлях .venv/bin/pytest. Активація лише для інтерактивних оболонок.

Міграція між інструментами

pip + venv → uv:

BASH
rm -rf .venv uv venv uv pip install -r requirements.txt

Requirements.txt продовжує працювати дослівно. Дві хвилини.

поезія → uv:

BASH
uvx migrate-to-uv # community tool, converts pyproject.toml

venv → поезія:

BASH
poetry init poetry add $(pip freeze | cut -d= -f1)

Перевірка

Після налаштування завжди перевіряйте, ЯКИЙ Python + pip ви використовуєте:

BASH
$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv

Якщо which python показує системний шлях після активації, щось не так — зазвичай ви активували в підоболонці, яка вже вийшла.


Віртуальні середовища є однією з небагатьох тем Python, де сучасна відповідь (2026) справді простіша, ніж історична. uv для нових проектів, venv для скриптів, pipx для CLI. Готово.

Наступний крок: Python DevOps трек охоплює uv + ruff + Docker + сучасний стек розгортання Python — практичні заняття зі справжнім Python, запущеним у вашому браузері.

Готові спробувати?

15 безкоштовних уроків після безкоштовної реєстрації — без картки. Спробуйте платформу та вирішуйте.

Почніть безкоштовно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.