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

Опубликовано: 2022-11-07

В этой статье вы узнаете, как начать работу с виртуальными средами на Python в операционных системах Windows и Linux.

Когда вы начинаете работать над несколькими проектами в локальной среде разработки, вы часто сталкиваетесь с проблемами зависимостей. Создание виртуальных сред для каждого из ваших проектов может помочь вам лучше управлять зависимостями и требованиями проекта.

Чтобы использовать преимущества виртуальных сред в Python, давайте научимся создавать и активировать виртуальные среды.

Что такое виртуальные среды?

Виртуальные среды — это изолированные и независимые среды, содержащие код и зависимости проекта.

Но почему вы должны использовать виртуальные среды?

Что ж, виртуальные среды позволяют вам устанавливать и использовать разные версии одних и тех же библиотек для разных проектов. Использование виртуальных сред также гарантирует отсутствие критических изменений, когда два или более проектов используют разные версии. Давайте разберемся в этом подробнее.

Установка пакетов в Python

Стандартная библиотека Python поставляется с несколькими полезными модулями для модульного тестирования, взаимодействия с операционной системой, работы с датами и временем и многого другого.

Однако при работе над проектами Python вам часто потребуется установить другие пакеты, разработанные сообществом Python. Это особенно актуально для таких приложений, как парсинг веб-страниц для сбора данных, машинное обучение и веб-приложения.

Для установки и управления этими пакетами вы можете использовать conda или pip.

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

local-dev-окружение

Так почему это проблема?

Ну, у вас может быть N пакетов в вашей среде разработки. Однако для проекта, над которым вы сейчас работаете, может потребоваться только 3 из них. Когда все ваши проекты используют общие установки, очень сложно определить, какой из проектов требует какой из установленных пакетов — зависимости, связанные с каждым проектом.

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

Что происходит с существующей установкой?

Он удаляется и заменяется версией Django, которую вы установили. В более новых стабильных выпусках некоторые функции могли быть объявлены устаревшими. И ваши более ранние проекты Django могут работать не так, как ожидалось.

версия-diff

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

Как работают виртуальные среды

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

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

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
изображение-3

До сих пор мы не устанавливали никаких пакетов, поэтому вы должны увидеть setuptools и pip , установленные по умолчанию, в каждой из созданных виртуальных сред.

Установка pip внутри виртуальной среды позволяет устанавливать пакеты, необходимые для конкретного проекта; вот почему у вас есть независимая среда разработки для каждого проекта.

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

 $ pip install requests

Когда вы устанавливаете библиотеку запросов, вы увидите, что библиотека запросов устанавливается вместе со всеми необходимыми для нее пакетами.

установить-библиотеки-в-виртуальной-среде-python
 $ pip list
просмотр библиотек в виртуальной среде Python

Вы можете использовать команду 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, обязательно используйте виртуальные среды для лучшего управления зависимостями. Удачного кодирования!