Начало работы с виртуальными средами в Python
Опубликовано: 2022-11-07В этой статье вы узнаете, как начать работу с виртуальными средами на Python в операционных системах Windows и Linux.
Когда вы начинаете работать над несколькими проектами в локальной среде разработки, вы часто сталкиваетесь с проблемами зависимостей. Создание виртуальных сред для каждого из ваших проектов может помочь вам лучше управлять зависимостями и требованиями проекта.
Чтобы использовать преимущества виртуальных сред в Python, давайте научимся создавать и активировать виртуальные среды.
Что такое виртуальные среды?
Виртуальные среды — это изолированные и независимые среды, содержащие код и зависимости проекта.
Но почему вы должны использовать виртуальные среды?
Что ж, виртуальные среды позволяют вам устанавливать и использовать разные версии одних и тех же библиотек для разных проектов. Использование виртуальных сред также гарантирует отсутствие критических изменений, когда два или более проектов используют разные версии. Давайте разберемся в этом подробнее.
Установка пакетов в Python
Стандартная библиотека Python поставляется с несколькими полезными модулями для модульного тестирования, взаимодействия с операционной системой, работы с датами и временем и многого другого.
Однако при работе над проектами Python вам часто потребуется установить другие пакеты, разработанные сообществом Python. Это особенно актуально для таких приложений, как парсинг веб-страниц для сбора данных, машинное обучение и веб-приложения.
Для установки и управления этими пакетами вы можете использовать conda или pip.
Для каждого проекта требуется определенный набор пакетов, которые необходимо установить. Однако, когда вы устанавливаете все пакеты в своей среде разработки на локальном компьютере, все проекты совместно используют глобально установленные пакеты.

Так почему это проблема?
Ну, у вас может быть N пакетов в вашей среде разработки. Однако для проекта, над которым вы сейчас работаете, может потребоваться только 3 из них. Когда все ваши проекты используют общие установки, очень сложно определить, какой из проектов требует какой из установленных пакетов — зависимости, связанные с каждым проектом.
У этого подхода есть еще одно ограничение. Предположим, у вас есть проект Django 2.2 в вашей библиотеке проектов. Вы решаете начать работу над проектом, в котором используется Django 4. Поэтому вы устанавливаете самую последнюю версию Django в той же среде разработки.
Что происходит с существующей установкой?
Он удаляется и заменяется версией Django, которую вы установили. В более новых стабильных выпусках некоторые функции могли быть объявлены устаревшими. И ваши более ранние проекты Django могут работать не так, как ожидалось.

Подводя итоги нашего обсуждения: управление зависимостями становится затруднительным, когда все пакеты установлены в общей среде, потому что для запуска проектов требуется собственный набор библиотек.
Как работают виртуальные среды
До сих пор мы видели проблемы, связанные с установкой пакетов в глобальной среде разработки (системные установки). Это побуждает нас понять, как виртуальные среды преодолевают это ограничение.
Когда вы создаете и активируете виртуальную среду для своих проектов Python, вы можете установить только те пакеты, которые необходимы для текущего проекта.

Возвращаясь к примеру проектов Django с виртуальными средами, вы можете запускать проекты Django 2.2 и Django 4 — без каких-либо конфликтов. Это связано с тем, что установки Django больше не являются общесистемными установками, а ограничены виртуальными средами соответствующих проектов.
По сути: виртуальные среды — это изолированные среды, которые содержат как код, так и зависимости для проекта.
Преимущества виртуальных сред

Теперь, когда вы узнали, как работают виртуальные среды в Python, давайте перечислим преимущества их использования:
- Виртуальные среды предоставляют изолированную среду разработки для отдельных проектов, позволяя нам устанавливать только те пакеты, которые необходимы для конкретного проекта.
- Поскольку виртуальные среды проектов независимы и изолированы, разные проекты могут использовать разные версии одной и той же библиотеки — в зависимости от требований. В виртуальных средах вам не нужно беспокоиться о системных разрешениях на установку библиотек и настройку среды разработки.
- После установки пакетов в виртуальной среде вы можете зафиксировать зависимости проекта в файле requirements.txt. Это позволяет другим разработчикам копировать разработку и среду проекта и устанавливать необходимые пакеты с помощью одной команды.
Инструменты для создания виртуальных сред

Итак, вы узнали, как работают виртуальные среды и какие преимущества дает их использование. Давайте рассмотрим некоторые популярные инструменты, которые вы можете использовать для создания и управления виртуальными средами в Python.
№1. Виртуалэнв
Virtualenv — один из широко используемых инструментов для создания и управления виртуальными средами для проектов Python. Часть функций virtualenv
доступна в пакете venv . Однако пакет virtualenv
быстрее и расширяемее по сравнению с venv
.
№ 2. Пипенв
С pipnev у вас есть как функциональность виртуальной среды virtualenv
, так и возможности управления пакетами pip
. Он использует pip-файлы для управления зависимостями проекта внутри виртуальной среды.
Вы можете попробовать pipenv
прямо из браузера на этой игровой площадке Pipenv.
№3. Конда
Если вы используете дистрибутив Python Anaconda для разработки, вы можете использовать conda для управления пакетами и для создания виртуальных сред.
Чтобы узнать больше, ознакомьтесь с этим исчерпывающим руководством по управлению средами с помощью conda.

№ 4. Поэзия
Poetry — это инструмент управления пакетами, который позволяет вам управлять зависимостями во всех проектах Python. Чтобы начать использовать Poetry, вам необходимо установить Python 3.7 или более позднюю версию.
№ 5. Венв
Как уже упоминалось, venv предлагает подмножество функций virtualenv , но имеет то преимущество, что он встроен в стандартную библиотеку Python, начиная с Python 3.3.
Он легко доступен при установке Python и не требует установки внешних пакетов. Мы будем использовать его в этом руководстве для создания виртуальных сред и работы с ними.
Как создать виртуальную среду Python в Ubuntu
Чтобы выполнить оставшуюся часть этого руководства, вам потребуется локальная установка Python 3. Убедитесь, что вы используете Python 3.5 или более позднюю версию.
В этом разделе описаны шаги по созданию и активации виртуальных сред на компьютере с Ubuntu Linux. Те же шаги можно использовать и в других дистрибутивах Linux.
Для удобства управления создадим директорию проекта и cd
в нее; Мы создадим venv
внутри этого каталога.
$ mkdir my_project $ cd my_project
Общий синтаксис для создания виртуальной среды для вашего проекта Python: python3 -m venv <venv-name-or-path>
. После запуска этой команды в текущем рабочем каталоге будет создана виртуальная среда с именем my_env
:
$ python3 -m venv my_env
Как активировать и установить пакеты внутри виртуальной среды
После того, как вы создали виртуальную среду, вы можете активировать ее и установить в нее необходимые пакеты. Чтобы активировать виртуальную среду, вы можете запустить следующую команду:
$ source my_env/bin/activate
После того, как вы активировали виртуальную среду, вы можете запустить команду pip list
, чтобы получить список установленных пакетов:
$ pip list

До сих пор мы не устанавливали никаких пакетов, поэтому вы должны увидеть setuptools
и pip
, установленные по умолчанию, в каждой из созданных виртуальных сред.
Установка pip
внутри виртуальной среды позволяет устанавливать пакеты, необходимые для конкретного проекта; вот почему у вас есть независимая среда разработки для каждого проекта.
Теперь, когда вы активировали виртуальную среду, вы можете установить в нее специфичные для проекта пакеты с помощью pip. В качестве примера давайте установим запросы Python, один из самых загружаемых пакетов Python, который предоставляет несколько полезных функций для отправки HTTP-запросов для работы с веб-API.
$ pip install requests
Когда вы устанавливаете библиотеку запросов, вы увидите, что библиотека запросов устанавливается вместе со всеми необходимыми для нее пакетами.

$ pip list

Вы можете использовать команду pip freeze
и перенаправить вывод в файл requirements.txt, как показано ниже:
$ pip freeze > requirements.txt
Если вы изучите содержимое текущего каталога проекта, то увидите, что файл requirements.txt создан.
$ ls # my_env requirements.txt
Вы можете деактивировать виртуальную среду после работы над проектом, выполнив следующую команду:
$ deactivate
Как создать виртуальную среду Python в Windows
Как правило, для разработки предпочтительнее использовать среду Linux. Если вы работаете на компьютере с Windows, вы можете рассмотреть возможность использования подсистемы Windows для Linux (WSL) для настройки терминальной среды Ubuntu для локальной разработки.
Если вы работаете на компьютере с Windows, вы можете использовать Windows PowerShell или командную строку и создавать виртуальные среды с помощью следующей команды:
> python -m venv <path-to-venv>
Как активировать виртуальную среду
Активация виртуальных сред на компьютере с Windows отличается в зависимости от того, работаете ли вы в командной строке или в Windows PowerShell.
Если вы находитесь в командной строке, выполните следующую команду, чтобы активировать виртуальную среду:
> <path-to-venv>\Scripts\activate.bat
В качестве альтернативы, если вы используете Windows PowerShell, выполнение этой команды активирует виртуальную среду:
> <path-to-venv>\Scripts\Activate.ps1
Вы можете установить все необходимые пакеты внутри виртуальной среды.
Чтобы деактивировать виртуальные среды, вы можете запустить команду deactivate
— как в командной строке, так и в Windows PowerShell.
Вывод
В этой статье мы обсудили ограничения общесистемных установок и то, как они затрудняют управление зависимостями в проектах Python. Виртуальные среды в Python позволяют лучше управлять зависимостями, обеспечивая при этом изолированную среду разработки для отдельных проектов.
Среди широко используемых инструментов для создания и управления виртуальными средами в Python вы узнали, как использовать venv , который встроен в стандартную библиотеку Python для создания и активации виртуальных сред.
Внутри выделенной виртуальной среды проекта могут быть установлены версии библиотек, специфичных для проекта. Затем эти требования можно зафиксировать в файле requirements.txt, что позволяет другим разработчикам легко воспроизводить среду проекта.
Когда вы начнете свой следующий проект Python, обязательно используйте виртуальные среды для лучшего управления зависимостями. Удачного кодирования!