Виртуальная среда Python: virtualenv для начинающих

Почему виртуальные среды в Python так важны для разработчика? Без них невозможно избежать конфликтов версий библиотек. В этой статье мы подробно разберем, как создать и использовать virtualenv - инструмент для изолированной среды Python.

1. Что такое virtualenv и зачем он нужен

Virtualenv - это инструмент для создания изолированных виртуальных окружений Python. Каждая виртуальная среда имеет собственную установку Python и набор библиотек, независимую от других сред.

Зачем нужен virtualenv?

  • Позволяет устанавливать разные версии библиотек для разных проектов
  • Избегает конфликтов между зависимостями проектов
  • Изолирует проекты друг от друга и от глобальной среды
  • Упрощает развертывание проектов на разных машинах

Без virtualenv при глобальной установке библиотек возникают следующие проблемы:

  1. Сложно отследить, какие версии библиотек используются в проектах
  2. Проекты могут конфликтовать из-за разных версий одних и тех же библиотек
  3. Переустановка библиотек для одного проекта может сломать другие проекты

Например, Project A требует django==1.11, а Project B - django==2.2. При глобальной установке этих библиотек один из проектов сломается.

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

2. Установка virtualenv

Чтобы начать использовать virtualenv, нужно установить это расширение. Обычно это делается через pip:

pip install virtualenv

Возможны и другие способы установки:

  • Через менеджер пакетов (apt, yum, brew и т.д.)
  • Из исходников (скачать с GitHub, распаковать, запустить setup.py)

Помимо самого virtualenv потребуются:

  • Python
  • Модуль setuptools
  • Модуль pip

После установки можно проверить работу командой:

virtualenv --version

Если выводится номер версии - значит, все прошло успешно. Также должен появиться вывод справки по использованию virtualenv.

При возникновении ошибок стоит проверить версию Python, наличие модулей setuptools и pip. Возможно, понадобится выполнить:

pip install --upgrade setuptools

Теперь можно приступать к созданию своей первой виртуальной среды Python.

3. Создание виртуальной среды Python

Чтобы создать виртуальную среду, используется команда virtualenv. Укажем ей папку, куда поместить среду:

virtualenv my_env

Это создаст папку my_env со следующей структурой:

 my_env/ bin/ activate python lib/ pythonX.X/ include/ pyvenv.cfg 

Где X.X - версия Python, использованная по умолчанию. Чаще всего это системная версия Python.

Все библиотеки будут устанавливаться в каталог my_env/lib/pythonX.X/site-packages. Этот каталог изолирован от глобальных библиотек Python.

Таким образом можно создать несколько виртуальных сред - для каждого проекта свою. Это избавит от конфликтов между проектами.

Чтобы задать другую версию Python, используется параметр -p:

virtualenv -p /usr/bin/python3.6 my_env

Здесь указывается полный путь к нужному интерпретатору Python. Это позволяет гибко выбирать версию для каждого проекта.

Также вместо python можно указать pypy, python3.7 и другие варианты, если они установлены в системе.

При создании virtualenv часто возникают следующие ошибки:

  • Отсутствует setuptools (ModuleNotFoundError: No module named 'setuptools') - нужно выполнить pip install --upgrade setuptools
  • Нужны права суперпользователя для установки в системные каталоги - лучше использовать --user или создать virtualenv в домашней директории
  • Неправильно указан путь к интерпретатору Python при использовании параметра -p

Теперь виртуальная среда готова. Для начала работы в ней нужно ее активировать.

Портрет молодой женщины, пишущей код на Python на ноутбуке в своей комнате утром при солнечном свете. Сфокусированное серьезное выражение лица.

4. Активация и работа в виртуальной среде

Чтобы начать использовать virtualenv, его нужно сначала активировать. Это делается командой source bin/activate (в Windows просто bin\activate).

Признак активной виртуальной среды:

  • Изменение приглашения командной строки. Обычно добавляется префикс с именем среды.
  • Изменение результата команды which python. Теперь это будет python из виртуальной среды.

В активной среде можно устанавливать библиотеки через pip и запускать скрипты командой python.

Например, установим в среду web-фреймворк Django:

pip install django

Запустим скрипт hello.py:

python hello.py

Все библиотеки и изменения будут храниться локально в этой виртуальной среде, не затрагивая систему.

Чтобы отключить виртуальную среду, используйте команду deactivate. При этом среда перестанет влиять на python и pip.

Так можно гибко переключаться между несколькими проектами и их изолированными средами.

Работая с virtualenv нужно следить, чтобы он был активирован при установке библиотек и запуске скриптов. Иначе это может затронуть глобальную среду Python, что приведет к неожиданным ошибкам.

В следующем разделе рассмотрим более продвинутые варианты работы с виртуальными средами.

5. Управление виртуальными средами

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

Чтобы посмотреть список сред, используйте:

lsvirtualenv

Для переключения между средами:

workon env_name

Также virtualenv позволяет экспортировать среду в zip-архив:

zip -r env_name.zip env_name

И затем импортировать из этого архива на другой машине. Это удобно для переноса проектов.

Чтобы удалить ненужную virtualenv среду, просто удалите ее каталог.

Полезный совет - исключать каталоги виртуальных сред из системы контроля версий Git. Так проекты можно будет легко переносить на другие компьютеры.

Драматичный низкий ракурс программиста, работающего ночью при синем неоновом свете мониторов. На лице концентрация и решимость.

6. Автоматизация virtualenv

Для автоматизации работы с виртуальными средами используется virtualenvwrapper.

Он предоставляет дополнительные команды:

  • mkvirtualenv - создание среды
  • cdsitepackages - переход в каталог сайт-пакетов среды
  • cdvirtualenv - смена текущей директории на каталог виртуальной среды

Также есть автодополнение для bash и zsh, что ускоряет работу.

В целом, virtualenvwrapper делает процесс управления средами более удобным.

7. Проблемы при работе с virtualenv

Рассмотрим наиболее частые проблемы при работе с виртуальными средами Python.

1. Медленное создание среды. Это может быть связано с антивирусом, который сканирует каждый создаваемый файл. Выключите сканирование на время работы.

2. Ошибка доступа в Windows. Нужно запускать командную строку от имени администратора или создавать среды в подкаталоге пользователя, например в C:/Users/username/envs.

3. Забыл активировать среду и что-то сломалось. Удалите глобально установленные пакеты или переустановите Python.

4. Как перенести проекты с virtualenv на другой компьютер? Создайте архив среды и разверните его на новом компьютере.

5. Где хранить виртуальные среды - в репозитории проекта или отдельно? Лучше хранить отдельно, тогда их можно будет повторно использовать.

8. Альтернативы virtualenv

Есть и другие способы создания изолированных сред Python.

  • venv - стандартный модуль в Python 3
  • pipenv - среда и менеджер пакетов в одном
  • conda - создает среды для Python и других языков
  • pyenv - позволяет легко переключать версии Python

У каждого подхода есть свои плюсы и минусы. Но virtualenv остается популярным и мощным инструментом для создания виртуальных сред Python.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.