Ответ
Для изоляции зависимостей и избежания конфликтов версий пакетов между проектами в Python используются виртуальные окружения.
Стандартным инструментом для этого является модуль venv.
Основной процесс работы с venv:
-
Создание окружения В директории проекта выполните команду, где
venv— это стандартное имя для папки окружения:# Linux/macOS python3 -m venv venv # Windows py -m venv venv -
Активация окружения После активации
pipбудет устанавливать пакеты в папкуvenv, а не глобально.# Linux/macOS source venv/bin/activate # Windows (Command Prompt) .venvScriptsactivate.bat # Windows (PowerShell) .venvScriptsActivate.ps1 -
Установка зависимостей Устанавливайте пакеты, как обычно. Они будут привязаны только к этому проекту.
pip install requests numpy pip freeze > requirements.txt -
Деактивация Для выхода из виртуального окружения используйте команду:
deactivate
Инструменты для продвинутого управления:
- Poetry или Pipenv: автоматизируют создание окружений и управление зависимостями через файлы
pyproject.tomlилиPipfile, что является более современной практикой. - pyenv: позволяет управлять несколькими версиями самого Python на одной машине.
Ответ 18+ 🔞
Так, слушай, история про виртуальные окружения в питоне — это вообще пиздец какой-то жизненно важный скилл, если не хочешь потом орать "почему у меня всё сломалось, блядь?".
Представь: у тебя два проекта. В одном нужен numpy версии 1.20, а в другом — 1.25, потому что там какой-то новый, ебаный, функционал. Если ты всё ставишь глобально в систему — это гарантированный пиздец и конфликт версий. Один проект начнёт падать с ошибками, которые даже читать страшно. Чтобы этого не было, нужны виртуальные окружения. Это как отдельные, изолированные комнаты для каждого проекта, где у него свои игрушки и он никому не мешает.
Стандартный и самый простой способ — модуль venv. Делается всё просто, хоть и через консоль.
Как этим пользоваться, не сломав себе всё:
-
Создаём эту самую комнату-окружение. Заходишь в папку своего проекта и пишешь магическую команду.
venvв конце — это просто имя папки, где всё будет лежать. Можешь назвать её.venvилиmy_super_env, но все обычно называютvenv, чтобы не ебать мозг.# На Линуксе или Маке python3 -m venv venv # На Винде (если у тебя несколько питонов) py -m venv venvСоздалась папочка
venv— вот твоё изолированное пространство, пока неактивное. -
Активация, или "заходим в комнату". Теперь нужно в этом окружении начать работать. Для этого его надо активировать. Команды для разных систем разные, запомнить несложно.
# Linux/macOS source venv/bin/activate # После этого в начале строки терминала появится (venv) — значит, ты внутри. # Windows (Command Prompt — старый добрый cmd) .venvScriptsactivate.bat # Windows (PowerShell — эта более новая штука) .venvScriptsActivate.ps1Всё! Теперь если будешь ставить пакеты через
pip, они полетят не в систему, а в эту папкуvenv. Магия, блядь! -
Работаем в уютной изоляции. Ставим что душе угодно, конфликтов с глобальными пакетами не будет.
pip install requests pandas numpyА чтобы потом, например, на другом компе или коллеге легко всё повторить, сохраняем список установленного в файл:
pip freeze > requirements.txtФайл
requirements.txt— это святое. Его в репозиторий. Потом другой человек склонирует проект, создаст своё venv и сделаетpip install -r requirements.txt. И у него будет точь-в-точь такой же зоопарк пакетов. -
Выходим из комнаты. Закончил работать с проектом — просто выполни:
deactivateПриставка
(venv)исчезнет, и ты снова в глобальной системе. Всё просто, как три копейки.
А если хочется больше магии и автоматизации?
venv — это основа, но есть и крутые надстройки:
- Poetry или Pipenv: это уже не просто "комната", а целый "умный дом" для зависимостей. Они сами создают окружения, хитро разрешают версии пакетов и хранят всё в удобных файлах (
pyproject.tomlилиPipfile). Современно, модно, молодёжно. - pyenv: а это вообще другая история. Он нужен, если тебе нужно на одной машине иметь несколько разных версий самого Python. Скажем, на одном проекте 3.8, а на другом — 3.11.
pyenvпозволяет их переключать. А внутри каждой версии питона ты уже создаёшь своиvenvдля проектов. Мощь, блядь!
Короче, если не хочешь однажды проснуться в аду из ImportError и VersionConflict — приучайся к виртуальным окружениям с первого дня. Поначалу кажется, что лишние телодвижения, но потом спасибо себе скажешь.