Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Способы создания виртуального окружения
Существует несколько инструментов для создания виртуальных окружений. Мы проанализируем четыре ключевых инструмента, каждый со своими особенностями: venv, virtualenv, conda и UV. Запускать окружения будем на облачном сервере Simple-Server с использованием ОС Ubuntu.
Начиная с Python 3.3, разработчикам больше не нужны сторонние инструменты вроде virtualenv для создания изолированных сред. Стандартная библиотека языка включает в себя модуль venv, который признан наиболее удобным и предпочтительным методом для этой задачи.
- Открываем терминал и переходим в директорию с Python-проектом.
- Для активации виртуального окружения выполняем команду:
python -m venv my-first-envЗдесь my-first-env — это имя папки, в которой будет создано виртуальное окружение. Его можно назвать как угодно. Часто используются имена venv, .venv, env.
Команда создаст папку my-first-env со следующей структурой:
├── my-first-env/ # Директория виртуального окружения
│ ├── bin/ # Исполняемые файлы
│ │ ├── python # Интерпретатор Python
│ │ ├── python3 # Ссылка на python
│ │ ├── pip # Менеджер пакетов
│ │ ├── pip3 # Ссылка на pip
│ │ ├── activate # Активация для bash
│ │ ├── activate.csh # Активация для csh
│ │ └── easy_install* # Установщик пакетов
│ ├── include/ # C-заголовки для компиляции
│ ├── lib/ # Установленные пакеты
│ │ └── python3.X/ # Используемая версия Python
│ │ └── site-packages/
│ │ ├── pip/ # Пакет pip
│ │ ├── setuptools/
│ └── pyvenv.cfg # Конфигурация окружения- Перед тем как использовать виртуальное окружение, его необходимо активировать. Это временно меняет переменные окружения текущей shell-сессии так, чтобы команды
pythonиpipссылались на версии внутри созданного виртуального окружения. Для активации окруженияmy-first-envвыполняем команду внутри директории с проектом:
source my-first-env/bin/activateПри успешной активации в начале строки терминала отобразится приглашение с именем окружения.
- Для деактивации виртуального окружения используется команда:
После этого имя окружения слева пропадет. Команду по деактивации виртуального окружения можно выполнять из любого места в файловой системе.
virtualenv — популярный сторонний инструмент, который предлагает больше функций и немного быстрее. Также virtualenv можно использовать для создания окружений для более старых версий Python (например, Python 2.5).
- В отличие от
venv,virtualenvнеобходимо установить заранее. Произведем установку при помощи пакетного менеджера операционной системы. Так как мы используем Ubuntu, то воспользуемся менеджеромaptдля установки пакета:
apt install python3-venv -y-
Далее переходим в папку с проектом Python и создаем виртуальное окружение с именем
my-second-env: -
Процессы активации и деактивации аналогичны при работе с
venv. Для активации необходимо выполнить команду:
source my-second-env/bin/activateДля деактивации достаточно выполнить:
conda — это кроссплатформенный менеджер пакетов и окружений. Он управляет не только Python-пакетами, но и, например библиотеками на C/C++.
- Мы установим пакет Miniconda, которая содержит в себе предустановленный набор из более чем 1500 самых популярных пакетов для data science.
Для начала создадим директорию с именем miniconda3 в домашнем каталоге пользователя:
- Скачиваем архив с программой при помощи утилиты
wget:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh- Выполняем автоматическую установку Miniconda при помощи команды:
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3- После завершения установки удаляем установочный скрипт:
rm ~/miniconda3/miniconda.sh- Далее инициализируем
condaпри помощи команд:
source ~/miniconda3/bin/activate
conda init --all- Переходим в директорию с проектом и создаем новое виртуальное окружение:
conda create --name my-conda-envПри появлении надписи Proceed ([y]/n)? вводим y:
После того как виртуальное окружение будет создано, в выводе будут сгенерированы команды для активации и остановки окружения:
В нашем примере для активации необходимо выполнить команду:
conda activate my-conda-envДля деактивации используется команда:
UV — это современный инструмент, написанный на языке Rust, который заменяет собой целый набор утилит для управления зависимостями и виртуальными окружениями в Python.
- Для начала необходимо установить UV. Для этого выполняем команду:
curl -LsSf https://astral.sh/uv/install.sh | sh- Перед запуском UV необходимо добавить его бинарный файл в
PATH:
source $HOME/.local/bin/env- Прежде чем приступать к работе с UV, его необходимо инициализировать. Для этого выполняем команду:
И переходим в созданную директорию:
-
Создаем виртуальное окружение:
-
Для активации выполняем команду:
source .venv/bin/activate- Установить пакет можно при помощи команды:
Использование виртуального окружения на практике — на примере venv
- Создаем новую директорию и переходим в нее:
mkdir test-env && cd test-env- Создаем виртуальное окружение при помощи команды:
source test-env/bin/activate- Установим несколько пакетов при помощи менеджера пакетов
pip(теперь пакеты будут устанавливаться внутрь созданного виртуального окружения, а не глобально):
pip install requests numpy pandas- После того как работа над проектом завершена, необходимо сохранить зависимости в файл. Данная особенность позволяет легко воссоздать окружение на другом компьютере. Для сохранения зависимостей используется команда
pip freeze, которой в качестве аргумента необходимо указать файл. Как правило используется файлrequirements.txt, однако можно использовать любое другое имя:
pip freeze > requirements.txt- Проверим содержимое файла
requirements.txt:
В файл были записаны все используемые сторонние библиотеки, а также их версии.
- Чтобы восстановить зависимости на новом устройстве при переносе или копировании проекта, необходимо выполнить команду:
pip install -r requirements.txtВиртуальное окружение в Python стало незаменимым инструментом в процессе разработки. Возникает вопрос: какой же инструмент выбрать?
- Для большинства проектов используйте стандартный
venvили более продвинутый UV. - Если нужны дополнительные функции или работа с Python 2, используйте
virtualenv. - Если вы занимаетесь Data Science, то используйте экосистему Conda.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.