Что такое виртуальное окружение

Python. Урок 17. Виртуальные окружения

Что такое виртуальное окружение и зачем оно нужно?

Во-первых : различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться.

Во-вторых : может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, т.е. вы установили приложение и хотите, чтобы оно работало независимо от того обновляются у вас библиотеки или нет. Как вы понимаете, если оно будет использовать библиотеки из глобального хранилища ( /usr/lib/pythonXX/site-packages ), то, со временем, могут возникнуть проблемы.

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

ПО позволяющее создавать виртуальное окружение в Python

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

Virtualenvwrapper – это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет plug-in ’ов.

virtualenv

Установка virtualenv

Virtualenv можно установить с использованием менеджера pip (ссылка на статью), либо скачать исходные коды проекта и установить приложение вручную.

Установка с использованием pip.

Для установки virtualenv откройте консоль и введите следующую команду:

Установка из исходного кода проекта.

В этом случае, вам нужно будет выполнить чуть большее количество действий.

Введите в консоли следующий набор команд:

X.X – это версия приложения, ее вам нужно знать заранее.

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

Виртуальное окружение создается следующей командой:

PRG1 в данном случае – это имя окружения.

Активация виртуального окружения

Для активации виртуального окружения воспользуйтесь командой (для Linux ):

для Windows команда будет выглядеть так:

Команда source выполняет bash- скрипт без запуска второго bash- процесса.

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

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Если вы создадите виртуальное окружение с ключем –system-site-packages :

то в рамках окружения PRG1 вы будите иметь доступ к глобальному хранилищу пакетов:

Деактивация виртуального окружения

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

venv

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

Для создания виртуального окружения с именем PRG2 с помощью venv выполните следующую команду:

Активация виртуального окружения

Активация виртуального окружения в Linux выполняется командой:

Деактивация виртуального окружения

Деактивация выполняется командой deactivate (работает как в Windows, так и в Linux )

Полезные ссылки

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Источник

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

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

Что произойдет, если одному из ваших проектов понадобится пакет с версией, отличной от версии другого проекта? Что происходит, когда вы обновляете пакет для одного проекта: испортит ли это ваш код в другом проекте, который зависит от этого пакета? Как вы делитесь своим кодом с другими?

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Чтобы получить представление о том, что такое venv, мы разделим его на две части: виртуальную и окружающую среду

Окружающая среда

Среда, с которой вы уже знакомы. Например, когда вы устанавливаете Python3.10, вы не просто устанавливаете движок Python, также устанавливается pip. Когда вы используете pip для установки пакета, он попадает в папку Scripts в каталоге, в который вы установили Python. Это ваша среда: Python 3.10 со всеми установленными пакетами.

Если вы запустите свою программу python main.py произойдет следующее:

Виртуальная среда

Мне нравится думать о Venv как о создании совершенно новой, несколько более легкой среды специально для этого проекта. В следующих частях мы увидим, что когда вы создаете venv для своего проекта, вы фактически устанавливаете Python, pip и папку dependencies заново для этого конкретного проекта. Этот код не находится в вашем пути Python по умолчанию (например C:\Program Files\Python39 ), но может быть установлен где угодно, например, в папке вашего проекта (например C:\myProject\weatherApp\venv ).

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

Когда у вас есть виртуальная среда, вы можете указать ей создать для вас список всех содержащихся в ней пакетов. Затем, когда кто-то еще захочет использовать ваш код, он может создать собственный venv и использовать этот список для одновременной установки всех пакетов с нужными версиями. Это позволяет очень легко поделиться своим кодом с другими (через git, почту или USB-накопитель).

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

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

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

2.1 Установите Python

2.2 Установите virtualenv

2.3 Создание нашей первой виртуальной среды

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

3. Использование нашей виртуальной среды

Давайте начнем использовать нашу виртуальную среду. В этой части мы активируем его, установим несколько пакетов и снова деактивируем

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

3.1 Активация нашей виртуальной среды

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Если ваша среда активирована, вы увидите (venv) перед своим путем в вашем терминале, как на изображении выше. Каждый пакет, который вы pip install будет установлен в вашем virtualenv.

3.2 Использование нашей виртуальной среды

Вызов например pip install requests сейчас установит его на ваш venv. Вы можете увидеть это, вызвав pip list в вашей активированной среде; вы увидите там запросы. С другой стороны, если вы вызовете pip list в другом терминале (где не активирован venv), вы увидите другой список установленных пакетов

3.3 Деактивация нашей виртуальной среды

Вы можете отключить Venv, просто выполнив deactivate в своем терминале.

4. Экспорт и сборка venv

Вы создали приложение, которое работает с некоторыми зависимостями. Предположим, вы установили запросы и панды для запроса данных из API, выполнили некоторую очистку в пандах и затем сохранили их в файл. Теперь вы хотите, чтобы другие использовали вашу программу, но вот проблема: им нужно установить точно такие же зависимости с правильными версиями и все такое. Дадим им список.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

4.1. Перечислите свои зависимости в файле requirements.txt

Представим что у вас есть список пакетов, от которых зависит ваша программа. Pip может прочитать этот список и установить все пакеты.

4.2 Загрузка ваших зависимостей

4.3 Игнорирование виртуальных сред в git

Если вы хотите добавить свой проект в систему контроля версий, такую ​​как Github, не рекомендуется включать всю виртуальную среду. Это занимает много места и времени для загрузки и скачивания.

4.4 Установка пакетов из проектов git с исключенным venv

4.5 Виртуальные среды, requirements.txt и docker

Docker нужен список инструкций для сборки контейнера, и файл requirements.txt идеально подходит для этого. Dockerfile может выглядеть так:

Не волнуйтесь, если у вас нет опыта работы с Docker, просто знайте, что мы можем автоматически перенести весь наш исходный код внутри контейнера, установить все пакеты (# 3), а затем запустить наше приложение.

5. Лучшие практики: предотвращение ада зависимости

Следуя этим правилам, не должно быть вопросов о типе и версии ОС, python и всех его зависимостях.

Заключение

Я надеюсь, что смогу прояснить виртуальные среды и то, как Python устанавливает зависимости и как сохранить зависимости, чтобы они запутывались между проектами. Если у вас есть предложения / пояснения, прокомментируйте, чтобы я мог улучшить эту статью. Удачного кодирования!

Источник

Как работают библиотеки виртуального окружения

Вы когда-нибудь задумывались о том, как работают библиотеки виртуального окружения в Python? В этой статье я предлагаю ознакомится с главной концепцией, которую используют все библиотеки для окружений, такие как virtualenv, virtualenvwrapper, conda, pipenv.

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

Как вы можете видеть, Python добавляет специальный префикс ( lib/python$VERSION/os.py ) к нашему пути. Как только интерпретатор находит первое совпадение (наличие файла os.py), он изменяет sys.prefix и sys.exec_prefix на этот путь (с удаленным префиксом). Если по каким-то причинам совпадений не найдено, то используется стандартный путь, который вкомпилирован в интерпретатор.

Теперь давайте посмотрим как это делает одна из самых старых и известных библиотек — virtualenv.

После выполнения, она создает дополнительные директории:

Как вы можете видеть, виртуальное окружение было создано путём копирования бинарника Python в локальную папку (ENV/bin/python). Так же мы можем заметить, что родительская папка содержит символические ссылки на файлы стандартной библиотеки питона. Мы не можем создать символическую ссылку на исполняемый файл, т.к. интерпретатор всё равно разименует её до фактического пути.

Теперь давайте активируем наше окружение:

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

Улучшения в Python 3

Начиная с версии Python 3.3, появился новый стандарт, именуемый как PEP 405, который вводит новый механизм для легковесных окружений.

Эту фичи активно использует стандартный модуль venv, который появился в Python 3.

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

Источник

Создание виртуальных окружений и установка библиотек для Python 3 в IDE PyCharm

Язык программирования Python считается достаточно простым. На нем легче и быстрее пишутся программы, по сравнению с компилируемыми языками программирования. Для Python существует множество библиотек, позволяющих решать практически любые задачи. Есть, конечно, и минусы и другие нюансы, но это отдельная тема.

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

Статья начинается с базовых вещей: с установки Python 3, инструментов разработки Pip и Virtualenv и среды разработки PyCharm в Windows и в Ubuntu. Для многих это не представляет трудностей и возможно, что уже всё установлено.

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

Установка Python и Pip

Pip является менеджером пакетов для Python. Именно с помощью него обычно устанавливаются модули/библиотеки для разработки в виде пакетов. В Windows Pip можно установить через стандартный установщик Python. В Ubuntu Pip ставится отдельно.

Установка Python и Pip в Windows

Для windows заходим на официальную страницу загрузки, где затем переходим на страницу загрузки определенной версии Python. У меня используется Python 3.6.8, из-за того, что LLVM 9 требует установленного Python 3.6.

Во время установки ставим галочку возле Add Python 3.x to PATH и нажимаем Install Now:

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Установка Python и Pip в Ubuntu

В Ubuntu установить Python 3 можно через терминал. Запускаем его и вводим команду установки. Вторая команда выводит версию Python.

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

Основные команды Pip

Рассмотрим основные команды при работе с Pip в командой строке Windows и в терминале Ubuntu.

Установка VirtualEnv и VirtualEnvWrapper

VirtualEnv используется для создания виртуальных окружений для Python программ. Это необходимо для избежания конфликтов, позволяя установить одну версию библиотеки для одной программы, и другу для второй. Всё удобство использования VirtualEnv постигается на практике.

Установка VirtualEnv и VirtualEnvWrapper в Windows

В командной строке выполняем команды:

Установка VirtualEnv и VirtualEnvWrapper в Ubuntu

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

После которой в конец

Работа с виртуальным окружением VirtualEnv

Рассмотрим основные команды при работе с VirtualEnv в командой строке Windows и в терминале Ubuntu.

КомандаОписание
mkvirtualenv env-nameСоздаем новое окружение
workonСмотрим список окружений
workon env-nameМеняем окружение
deactivateВыходим из окружения
rmvirtualenv env-nameУдаляем окружение

Установка PyCharm

PyCharm — интегрированная среда разработки для языка программирования Python. Обладает всеми базовыми вещами необходимых для разработки. В нашем случае огромное значение имеет хорошее взаимодействие PyCharm с VirtualEnv и Pip, чем мы и будем пользоваться.

Установка PyCharm в Windows

Скачиваем установщик PyCharm Community для Windows с официального сайта JetBrains. Если умеете проверять контрольные суммы у скаченных файлов, то не забываем это сделать.

В самой установке ничего особенного нету. По сути только нажимаем на кнопки next, и в завершение на кнопку Install. Единственно, можно убрать версию из имени папки установки, т.к. PyCharm постоянно обновляется и указанная версия в будущем станет не правильной.

Установка PyCharm в Ubuntu

Скачиваем установщик PyCharm Community для Linux с официального сайта JetBrains. Очень хорошей практикой является проверка контрольных сумм, так что если умеете, не ленитесь с проверкой.

Теперь в директории

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

Производим установку. И очень важно в конце не забыть создать desktop файл для запуска PyCharm. Для этого в Окне приветствия в нижнем правом углу нажимаем на ConfigureCreate Desktop Entry.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Установка PyCharm в Ubuntu из snap-пакета

PyCharm теперь можно устанавливать из snap-пакета. Если вы используете Ubuntu 16.04 или более позднюю версию, можете установить PyCharm из командной строки.

Использование VirtualEnv и Pip в PyCharm

Поддержка Pip и Virtualenv в PyCharm появилась уже довольно давно. Иногда конечно возникают проблемы, но взаимодействие работает в основном стабильно.

Рассмотрим два варианта работы с виртуальными окружениями:

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

Создадим программу, генерирующую изображение с тремя графиками нормального распределения Гаусса Для этого будут использоваться библиотеки matplotlib и numpy, которые будут установлены в специальное созданное виртуальное окружение для программы.

Запускаем PyCharm и окне приветствия выбираем Create New Project.

В мастере создания проекта, указываем в поле Location путь расположения создаваемого проекта. Имя конечной директории также является именем проекта. В примере директория называется ‘first_program’.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Теперь установим библиотеки, которые будем использовать в программе. С помощью главного меню переходим в настройки FileSettings. Где переходим в Project: project_nameProject Interpreter.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Здесь мы видим таблицу со списком установленных пакетов. В начале установлено только два пакета: pip и setuptools.

Справа от таблицы имеется панель управления с четырьмя кнопками:

Для добавления (установки) библиотеки в окружение нажимаем на плюс. В поле поиска вводим название библиотеки. В данном примере будем устанавливать matplotlib. Дополнительно, через Specify version можно указать версию устанавливаемого пакета и через Options указать параметры. Сейчас для matplotlib нет необходимости в дополнительных параметрах. Для установки нажимаем Install Package.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

После установки закрываем окно добавления пакетов в проект и видим, что в окружение проекта добавился пакет matplotlib с его зависимостями. В том, числе был установлен пакет с библиотекой numpy. Выходим из настроек.

Теперь мы можем создать файл с кодом в проекте, например, first.py. Код программы имеет следующий вид:

Далее указываем в поле Name имя конфигурации и в поле Script path расположение Python файла с кодом программы. Остальные параметры не трогаем. В завершение нажимаем на Apply, затем на OK.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Теперь можно выполнить программу и в директории с программой появится файл gauss.png :

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

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

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

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

В этом примере мы создадим виртуальное окружения PySide2, куда установим данную библиотеку. Затем создадим программу, использующую библиотеку PySide2 из предварительно созданного виртуального окружения. Программа будет показывать метку, отображающую версию установленной библиотеки PySide2.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Далее в созданном окружении устанавливаем пакет с библиотекой PySide2, также как мы устанавливали matplotlib. И выходим из настроек.

Теперь мы можем создавать новый проект использующий библиотеку PySide2. В окне приветствия выбираем Create New Project.

Что такое виртуальное окружение. Смотреть фото Что такое виртуальное окружение. Смотреть картинку Что такое виртуальное окружение. Картинка про Что такое виртуальное окружение. Фото Что такое виртуальное окружение

Для проверки работы библиотеки создаем файл second.py со следующий кодом:

Далее создаем конфигурацию запуска программы, также как создавали для первого примера. После чего можно выполнить программу.

Заключение

У меня нет богатого опыта программирования на Python. И я не знаком с другими IDE для Python. Поэтому, возможно, данные IDE также умеют работать с Pip и Virtualenv. Использовать Pip и Virtualenv можно в командой строке или в терминале. Установка библиотеки через Pip может завершиться ошибкой. Есть способы установки библиотек без Pip. Также создавать виртуальные окружения можно не только с помощью Virtualenv.

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

Источник

Виртуальное окружение в Python

В этой статье мы рассмотрим как используется и для чего нужно виртуальное окружение в Python.

Введение

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

Так же оно позволяет задействовать различные версии интерпретатора в нескольких проектах.

Создание окружения в Python выполняется с помощью встроенного модуля venv. Venv — это модуль из стандартной библиотеки не требующий никакой дополнительной установки.

Виртуальное окружение создается под конкретные проекты, для его создания потребуется знать путь до корневого каталога.

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

Необходимо выполнить команду в терминале

mkdir test_project создает папку с именем test_project, а cd test_project перемещается в эту директорию.

Это то же самое, что создать пустую папку и открыть ее.

В директории test_project будут храниться все файлы проекта и это будет местом для виртуального окружения.

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

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

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

.venv — имя окружения. Можно называть как угодно. По совместительству является директорией в которой хранится вся информация окружения.

Если в операционной системе есть несколько версий Python и требование использовать какую – то конкретно, создайте виртуальную среду следующим образом

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

Просто создать виртуальное окружение недостаточно, так же его необходимо активировать

Активация виртуальной среды в Windows

Открываем командную оболочку или powershell, переходим в директорию проекта и выполняем команду

Активация виртуальной среды в macOS и Linux

Достаточно открыть терминал в директории проекта и выполнить команду

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

Вот и все. Затем вы можете установить, обновить и удалить пакеты с помощью pip. Установленные пакеты будут изолированы только для данного проекта.

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *