Виртуальное окружение Python: как настроить и использовать

Раздел: Управление проектами -> Настройка окружения Python

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

Как создать изолированную среду для проекта Python с помощью встроенного модуля venv?

Виртуальное окружение (virtual environment) позволяет изолировать зависимости проекта от системного интерпретатора и других проектов. Начиная с Python 3.3, в стандартную поставку включён модуль venv. Это основной и наиболее рекомендуемый способ для большинства задач.

python -m venv my_project_env

Anaconda python jupiter (anaconda и python jupyter (установка))

Команда создаёт папку my_project_env с копией интерпретатора, библиотек и утилит. После создания необходимо активировать окружение:

# Windows (cmd / PowerShell)
my_project_env\Scripts\activate

# macOS / Linux (bash / zsh)
source my_project_env/bin/activate

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

При успешной активации в начале командной строки появится имя окружения в скобках. Теперь все установки через pip будут попадать в изолированную папку.

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

deactivate

Типичная ошибка: выполнение активации на Windows через Scripts\activate без указания пути. Если используется PowerShell, может потребоваться сначала разрешить выполнение скриптов:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

На Linux/macOS может возникнуть ошибка Permission denied. Решение - дать права на выполнение: chmod +x my_project_env/bin/activate.

Какие альтернативы существуют, если требуется поддержка старых версий Python или дополнительные функции?

virtualenv - более старая, но гибкая утилита, работающая с Python 2.7+. Устанавливается через pip:

pip install virtualenv
virtualenv my_project_env --python=python3.8

Позволяет указывать конкретную версию интерпретатора. Активация аналогична venv.

Проблема: если virtualenv не находит указанную версию Python, следует убедиться что интерпретатор установлен и доступен в PATH.

Как управлять окружениями в научных проектах с помощью conda?

Для работы с пакетами, не всегда доступными в PyPI (например, численные библиотеки с оптимизированными сборками), удобно использовать Conda (часть дистрибутива Anaconda/Miniforge):

conda create -n my_project python=3.10
conda activate my_project

Conda создаёт окружение в собственной директории и позволяет устанавливать как Python-пакеты, так и системные библиотеки.

Ошибка: conda command not found - необходимо добавить папку с Conda в PATH или переустановить Anaconda.

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

Poetry - современный инструмент для управления проектами Python, который создаёт виртуальное окружение автоматически при первом запуске poetry install.

poetry new my_project
cd my_project
poetry add requests  # автоматически создаёт окружение и устанавливает пакет
poetry shell        # активация окружения

Poetry использует файлы pyproject.toml и poetry.lock для воспроизводимых установок.

Как использовать pipenv для комбинирования Pipfile и Pipfile.lock?

Pipenv предложен сообществом как надстройка над pip, venv и Pipfile:

pip install pipenv
pipenv install requests   # создаёт окружение и Pipfile
pipenv shell              # активация

Активация работает аналогично venv, но окружения хранятся в единой папке (по умолчанию ~/.local/share/virtualenvs/).

Проблема: pipenv может создавать окружения с неожиданными именами. Решение - использовать переменную PIPENV_VENV_IN_PROJECT=1 для создания .venv внутри проекта.

Расширенные примеры и нестандартные сценарии

1. Создание окружения с указанием конкретного пути к интерпретатору (venv)

Пример
# Windows
python -m venv --python="C:\Python38\python.exe" my_env
# macOS/Linux
python -m venv --python=/usr/bin/python3.9 my_env
Результат: будет создано окружение на базе Python 3.8/3.9, независимо от того, какая версия стоит по умолчанию в PATH.

2. Установка зависимостей из requirements.txt в созданное окружение

Пример
# Активируем окружение
source my_env/bin/activate
# Устанавливаем пакеты
pip install -r requirements.txt
# Сохраняем актуальный список (если нужно)
pip freeze > requirements.txt
После выполнения все пакеты, перечисленные в requirements.txt, будут установлены внутри окружения. Команда freeze перезаписывает файл точными версиями.

3. Интеграция с VS Code: автоматический выбор окружения

Пример
# Создаём окружение внутри папки проекта
cd my_project
python -m venv .venv
# Открываем VS Code
code .
VS Code обнаружит папку .venv и предложит использовать её как интерпретатор. Альтернативно можно вручную выбрать: Ctrl+Shift+P -> Python: Select Interpreter -> указать путь к python.exe в .venv.

4. Клонирование окружения на другую машину с помощью pip freeze и requirements.txt

Пример
# На исходной машине (окружение активно)
pip freeze > requirements.txt
# Копируем файл на другую машину
# Создаём новое окружение и устанавливаем
python -m venv cloned_env
source cloned_env/bin/activate
pip install -r requirements.txt
Результат: на целевой машине будет установлен тот же набор версий пакетов, что и на исходной.

5. Использование virtualenvwrapper для удобного управления несколькими окружениями

Пример
pip install virtualenvwrapper
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv my_project_env  # создаёт и сразу активирует
workon my_project_env        # переключение между окружениями
deactivate                   # выход
rmvirtualenv my_project_env  # удаление
Утилита хранит все окружения в одной папке (WORKON_HOME) и упрощает переключение.

6. Создание окружения с помощью pyenv-virtualenv (для пользователей pyenv)

Пример
# Предварительно установить pyenv и pyenv-virtualenv
pyenv install 3.11.0
pyenv virtualenv 3.11.0 my_project_env
pyenv activate my_project_env  # или pyenv local my_project_env для автоматической активации в папке
Позволяет создавать окружения на основе конкретной версии Python, установленной через pyenv.

7. Использование venv в CI/CD (пример GitHub Actions)

Пример
# .github/workflows/test.yml
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: Create and activate virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate
      - name: Install dependencies
        run: |
          source venv/bin/activate
          pip install -r requirements.txt
      - name: Run tests
        run: |
          source venv/bin/activate
          pytest
В CI-среде активация выполняется явно на каждом шаге, так как каждый шаг - новый shell.

8. Создание окружения с помощью Conda из YAML-файла для воспроизводимости

Пример
# environment.yml
name: my_project
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - numpy
  - pandas
  - pip
  - pip:
    - requests

# Команда для создания
conda env create -f environment.yml
conda activate my_project
Файл YAML полностью описывает окружение, включая pip-зависимости. Воспроизводимость гарантируется указанием версий.

9. Отключение автоматической активации окружения в Poetry (для сценариев без shell)

Пример
poetry run python script.py  # запустить скрипт внутри окружения без активации
poetry run pytest            # запустить тесты
Команда poetry run выполняет произвольную команду в контексте окружения, не активируя его в текущей оболочке.

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

Пример
# Для venv / virtualenv
rm -rf my_env

# Для Conda
conda env remove -n my_project

# Для Poetry
poetry env remove my_project

# Для Pipenv
pipenv --rm
После удаления все установленные пакеты и интерпретатор внутри окружения будут уничтожены.

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

En
виртуальная среда python (python)