Работа с виртуальными окружениями Python в Ubuntu: настройка, использование и альтернативы

Раздел: Инструменты разработки -> Виртуальные окружения

Создание виртуального окружения Python в Ubuntu

Основной метод: встроенный модуль venv

Начиная с Python 3.3, в стандартную поставку входит модуль venv. Он позволяет создать изолированное окружение без установки дополнительных пакетов. Для работы требуется Python 3 и пакет python3-venv (в некоторых дистрибутивах).

Установка необходимых пакетов (если ещё не установлены):

sudo apt update
sudo apt install python3 python3-venv python3-pip

Python venv ubuntu (создать виртуальное окружение python в ubuntu)

Создание окружения в директории проекта:

python3 -m venv myenv

Python activate window (активация виртуального окружения python в windows)

После выполнения появится папка myenv с копией интерпретатора и стандартных библиотек. Активация окружения:

source myenv/bin/activate

Python venv exit (выход из виртуального окружения python)

В командной строке появится префикс (myenv). Установка пакетов внутри окружения:

pip install requests

Venv python version (версия python в виртуальном окружении)

Деактивация выполняется командой:

deactivate

Python venv commands (команды виртуального окружения python)

Удаление окружения – достаточно удалить папку:

rm -rf myenv

Python django venv (настройка виртуального окружения для django)

Возможные проблемы и их решения

Ошибка: The virtual environment was not created successfully because ensurepip is not available. Решение – установить пакет python3-venv:

sudo apt install python3-venv

Python venv linux (использование виртуального окружения на linux)

Ошибка: Command 'python3' not found. Установите Python 3:

sudo apt install python3

Python unable to create venv (ошибка создания виртуального окружения python)

Окружение не активируется: source myenv/bin/activate: No such file or directory. Проверьте, что папка myenv создана и содержит bin/activate. Если создавалось с другим именем – скорректируйте путь.

Проблемы с кодировкой при активации. Убедитесь, что локаль установлена корректно:

export LANG=en_US.UTF-8
source myenv/bin/activate

Venv bin python (путь к интерпретатору в виртуальном окружении)

Как создать изолированное окружение с поддержкой разных версий Python?

Для выбора конкретной версии Python можно использовать virtualenv – сторонний инструмент, работающий с Python 2 и 3. Установка:

pip install virtualenv

Venv python 3 (создание виртуального окружения с python 3)

Создание окружения с указанием версии Python (например, 3.8):

virtualenv -p /usr/bin/python3.8 myenv

Python venv install packages (установка пакетов в виртуальное окружение python)

Активация и деактивация такие же, как для venv. Этот вариант удобен, если в системе несколько интерпретаторов и требуется строго заданная версия.

Как управлять окружениями с разными версиями Python и библиотеками в проектах Data Science?

Conda (часть дистрибутива Anaconda/Miniconda) предоставляет собственный менеджер окружений и пакетов. Установка Miniconda:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Создание окружения с Python 3.10 и пакетом numpy:

conda create -n myenv python=3.10 numpy

Активация:

conda activate myenv

Деактивация:

conda deactivate

Conda решает проблему несовместимости библиотек (например, TensorFlow и PyTorch) за счёт собственных репозиториев.

Как автоматизировать управление зависимостями и окружением в проекте?

Poetry – современный инструмент для управления зависимостями и сборки пакетов. Установка:

curl -sSL https://install.python-poetry.org | python3 -

Создание нового проекта с виртуальным окружением:

poetry new myproject
cd myproject
poetry install

Poetry автоматически создаёт изолированное окружение и генерирует файлы pyproject.toml и poetry.lock. Активация окружения:

poetry shell

Добавление зависимости:

poetry add requests

Как объединить управление зависимостями и окружением в одном инструменте?

Pipenv создаёт окружение на основе Pipfile. Установка:

pip install pipenv

Создание окружения для проекта:

cd project
pipenv install

Активация:

pipenv shell

Установка конкретного пакета:

pipenv install flask

Pipenv автоматически создаёт виртуальное окружение в скрытой папке и генерирует Pipfile.lock для воспроизводимости.

Дополнительные примеры использования виртуальных окружений

1. Создание окружения с явным указанием версии Python (venv + pyenv)

Если в системе установлено несколько версий Python через pyenv, venv может использовать конкретную:

Пример
pyenv install 3.9.7
pyenv local 3.9.7
python3.9 -m venv myenv

Результат: окружение создаётся с Python 3.9.7 независимо от версии по умолчанию.

2. Установка пакетов из requirements.txt с учётом зависимостей

Пример
python3 -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

Файл requirements.txt:

Пример
requests==2.31.0
flask==2.3.3
numpy==1.24.3

Вывод (пример):

Collecting requests==2.31.0
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
...
Successfully installed requests-2.31.0 flask-2.3.3 numpy-1.24.3

3. Использование параметра --system-site-packages для доступа к системным пакетам

Пример
python3 -m venv --system-site-packages myenv
source myenv/bin/activate
pip list

При этом в окружении будут видны пакеты, установленные в системе. Подходит для быстрого прототипирования, но может нарушить изоляцию.

4. Создание окружения в нестандартной директории

Пример
mkdir -p ~/.virtualenvs
python3 -m venv ~/.virtualenvs/myproject
source ~/.virtualenvs/myproject/bin/activate

Папка окружения размещается в скрытом каталоге, а проект остаётся чистым.

5. Скрипт активации и деактивации в bash-скриптах

Пример
#!/bin/bash
cd /home/user/project
if [ -d "venv" ]; then
    source venv/bin/activate
    python main.py
    deactivate
else
    echo "Окружение не найдено"
fi

Позволяет автоматически запускать проект с активированным окружением.

6. Использование venv внутри контейнера Docker

Dockerfile:

Пример
FROM ubuntu:22.04
RUN apt update && apt install -y python3 python3-venv python3-pip
WORKDIR /app
COPY . .
RUN python3 -m venv /opt/venv && . /opt/venv/bin/activate && pip install -r requirements.txt
CMD ["/opt/venv/bin/python", "app.py"]

Образ содержит изолированное окружение внутри контейнера.

7. Сравнение virtualenv и venv: создание с предустановленными setuptools и wheel

Пример
python3 -m venv --without-pip myenv  # окружение без pip (может быть нужно для отладки)
virtualenv --no-setuptools myenv   # virtualenv без setuptools

Результат: в папке myenv/bin отсутствуют pip и setuptools. Установить их можно вручную:

Пример
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

8. Создание окружения с форсированной переустановкой pip внутри него

Пример
python3 -m venv --clear myenv  # очистка существующего окружения
python3 -m venv --upgrade-deps myenv  # обновление pip и setuptools до последних версий

Полезно при проблемах с устаревшим pip.

9. Получение полного списка путей интерпретатора в окружении

Пример
source myenv/bin/activate
python -c "import sys; print('\n'.join(sys.path))"

Вывод (пример):

/home/user/project/myenv/lib/python3.10/site-packages
/home/user/project/myenv/lib/python3.10
...
/usr/lib/python3.10

Показывает, какие каталоги используются для импорта модулей.

10. Удаление окружения и проверка его статуса

Пример
deactivate  # если окружение активно
rm -rf myenv
python3 -m venv myenv  # создание заново

Создать виртуальное окружение Python в Ubuntu - comments

En
Python venv ubuntu (python)