В статье вы узнаете, как создать виртуальную среду Python . Это может понадобиться Python-разработчикам для того, чтобы избежать проблем с библиотеками разных версий.
- Простой пример: у вас есть два приложения, которые подключаются к одной и той же библиотеке. Вот только каждому приложению нужны разные ее версии.
- Еще пример: вы хотите обеспечить работу приложения независимо от обновлений библиотек, которые устанавливаются в глобальном хранилище Python.
- И третий пример: у вас нет доступа к этому хранилищу.
Выход во всех трех случаях — создать venv Python . Название модуля venv — это сокращение от Virtual Environment, то есть виртуальная среда. Venv представляет собой отличный инструмент для изоляции проектов, своеобразную песочницу. В ней мы можем запускать приложение со своими зависимостями, чтобы не мешать другим приложениям, которые используют то же ПО, но иных версий. В результате каждое приложение будет запускаться в собственной виртуальной среде, изолированно от остальных, что повысит стабильность работы всех приложений.
Виртуальная машина VirtualBox установка на компьютер с Windows 7 настройка и установка гостевой ОС
Как создать виртуальное окружение в Python 3
Приятная новость: отдельно устанавливать venv на Windows нам не потребуется, пакет является частью стандартной библиотеки Python 3 и поставляется вместе с интерпретатором.
Что касается Linux, то здесь venv далеко не всегда входит в пакет операционной системы, поэтому может потребоваться его установить. На Ubuntu/Debian это делается следующей командой:
sudo apt install -y python3-venv
Некоторые пакеты Python требуют сборки из исходных кодов, поэтому также может потребоваться установка следующих пакетов:
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
Теперь рассмотрим, как создать виртуальное окружение Python 3 в Windows и Linux с помощью venv .
Шаг 1. Запускаем venv
Сначала идет общая команда для всех ОС:
python -m venv venv
Разберем ее чуть подробнее. Здесь -m выступает в качестве инструкции для запуска модуля venv . А вторая запись venv указывает на каталог venv/lib/python3.8/site-packages/ (номер версии 3.8 добавлен просто для примера, она может быть и другой), в котором Python будет хранить все библиотеки и другие компоненты, необходимые для изолированной работы приложений.
Шаг 2. Активируем виртуальную среду
Активация виртуального окружения выполняется по-разному для Windows и Linux. В ОС от Microsoft понадобится запустить этот скрипт:
venvScriptsactivate.bat
А в Linux (и также в MacOS) нужно ввести вот такую инструкцию:
source venv/bin/activate
Если всё сделано правильно, будет выведена следующая запись:
Теперь можно приступать к работе над проектом в изолированном окружении.
Другие инструменты
Конечно, venv является самым современным инструментом для создания виртуальной среды. Но он появился только в Python 3. А что делать тем, кто по каким-то причинам работает с более старыми версиями языка? Ответ: пробовать иные инструменты, которые имеют и ряд других полезных функций, иначе бы мы о них даже не упоминали. Кратко опишем эти решения, а затем рассмотрим подробнее наиболее популярное.
Песочница в Windows. Программа Sandboxie
- virtualenv . Простой и понятный инструмент, который пригодится при развертывании многих приложений. Поэтому он будет полезен для освоения, и ниже мы представим инструкцию по работе с ним.
- pyenv . Позволяет изолировать версии «Питона». Полезен, если по какой-то причине вам требуется запускать разные версии Python — например, для тестирования программы.
- virtualenvwrapper . Обертка для virtualenv , которая используется для хранения виртуальных сред и различных операций с ними (создание, копирование, удаление). Virtualenvwrapper хорош тем, что с его помощью можно легко переключаться между средами и использовать различные плагины для расширения функций.
Создание виртуального окружения при помощи virtualenv
Рассмотрим этот процесс на примере ОС Linux. Впрочем, запуск virtualenv в Windows выполняется почти так же, разница будет лишь в путях, которые здесь будут иными, и скриптах. И это мы будем оговаривать отдельно.
Шаг 1. Устанавливаем virtualenv
Можно скачать исходники приложения и поставить его вручную, но удобнее всего сделать это с помощью менеджера pip . В этом случае всё, что вам понадобится, это ввести в консоли следующую инструкцию:
pip install virtualenv
Шаг 2. Создаем виртуальную среду
Этот шаг делается тоже при помощи всего одной небольшой инструкции:
virtualenv myenv
Эта простая команда создаст новый каталог в текущем. Разумеется, вместо myenv вы можете ввести любое другое имя для своего окружения. Теперь разберем структуру созданной директории:
- в /myenv/bin будут размещены скрипты для работы с окружением, копия интерпретатора нужной версии, а также собственно pip и ряд приложений для пакетной обработки. Если вы работаете в Windows, то эта папка будет иметь другой адрес: /myenv/Scripts .
- директории / myenv/lib , а также /myenv/include предназначены для хранения основных библиотек окружения. А все новые файлы будут загружаться в /myenv/lib/pythonX.X/site-packages/ , где вместо X.X будет указана ваша версия «Питона».
Шаг 3. Активируем виртуальную среду
В Linux и Windows это делается немного по-разному. Для Linux инструкция такая (будем использовать всё тот же пример с именем myenv , которое вы замените на нужное вам):
source myenv/bin/activate
А вот так это будет выглядеть в Windows:
myenvScriptsactivate.bat
При корректной активации вы увидите имя вашего виртуального окружения в нижней строке (выделили красным):
Если теперь создать виртуальную среду с ключом — system-site-packages , то вы получите доступ к общему хранилищу в рамках своей среды. Делается это так:
virtualenv —system-site-packages myenv
Обратите внимание, что путь к хранилищу в Linux и в Windows тоже будет разным: соответственно, для Линукса это будет /usr/lib/python3.8/site-packages , а для Виндовc — Python38Libsite-packages . Цифры версии, опять же, для примера, у вас она может быть другой.
Шаг 4. Выходим из виртуальной среды
После завершения работы с программой из нее нужно корректно выйти. В Linux это делается командой deactivate , а в Windows с помощью «батника», пакетного файла deactivate.bat .
Что нового?
Помимо уже рассмотренного модуля venv и virtualenv , существуют и более современные инструменты, обеспечивающие более гибкое управление проектами на Python, в том числе и в виртуальном окружении:
- Poetry . Это менеджер, позволяющий управлять зависимостями приложения в виртуальной среде. Также он облегчает тесты и развертывание приложений, автоматизируя многие вещи.
- Pipenv . И еще один менеджер, который уже содержит в себе pip и virtualenv , а также ряд других полезных инструментов. Этот менеджер создан для облегчения управления окружениями и пакетами, ведь многие разработчики на определенной стадии развития проекта сталкиваются с проблемами из-за контроля версий.
По большому счету, каждый из этих менеджеров заслуживает отдельного разговора, но их возможности выходят далеко за рамки нашей статьи. Поэтому расскажем самое главное об этих продуктах.
Главное о Poetry
Poetry способен взять на себя всю работу с библиотеками в рамках виртуальной среды, в том числе устанавливать, обновлять и публиковать их. Например, возможностей pip для этого уже не хватит. Кроме того, создание и упаковка приложения здесь реализована при помощи всего одной команды (замените myproject на собственное название):
poetry new myproject
А, например, инструкция poetry init позволит выполнить инициализацию проекта в уже созданной директории. Вводится эта инструкция из той же директории.
Также Poetry умеет выполнять публикацию проектов в частных репозиториях, отслеживать зависимости, а еще контролировать их версии. Наконец, он облегчает работу на собственных виртуальных серверах, обеспечивая надежную изоляцию ваших проектов. Найти этот замечательный инструмент можно здесь .
Главное о Pipenv
Если в двух словах, то Pipenv можно охарактеризовать, как pip + virtualenv , но с продвинутыми возможностями. И на самом деле возможности этого менеджера гораздо шире. Так, он избавляет от необходимости пользоваться не слишком удобным файлом зависимостей requirements.txt .
Вместо этого в Pipenv есть два других файла, один из которых, Pipfile.lock , позволяет связывать версии библиотек, что хорошо для безопасности разрабатываемых приложений. Ну, а собственно Pipfile является продвинутой заменой устаревшему файлу требований. А дело в том, что Pipfile , в отличие от requirements.txt , обновляется автоматически с изменением версий продукта, что здорово выручает при работе в команде, избавляя разработчиков от ошибок зависимостей. Pipenv можно найти здесь .
Что ж, теперь вы вооружены полным набором инструментов, и обилие зависимостей с разными версиями больше не должно вас пугать.
Источник: timeweb.cloud
Виртуальное окружение Python (venv)
Все сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show .
Location — путь до ваших глобальных пакетов.
В большинстве случаев, устанавливать пакеты глобально — плохая идея ♂️ Почему? Рассмотрим простой пример:
Допустим у нас есть два проекта: » Project A» и » Project B» . Оба проекта зависят от библиотеки Simplejson . Проблема возникает, когда для «Project A» нужна версия Simplejson 3.0.0, а для проекта «Project B» — 3.17.0. Python не может различить версии в глобальном каталоге site-packages — в нем останется только та версия пакета, которая была установлена последней.
Решение данной проблемы — создание виртуального окружения (virtual environment).
Основная цель виртуального окружения Python — создание изолированной среды для python-проектов
Это означает, что каждый проект может иметь свои собственные зависимости, независимо от других проектов.
Настройка виртуального окружения
Один из самых популярных инструментов для создания виртуального окружения — virtualenv . Однако в данной статье мы будем рассматривать более свежий инструмент venv .
Устанавливать venv не нужно — он входит в стандартную библиотеку Python
Создание
Для создания виртуального окружения, перейдите в директорию своего проекта и выполните:
python -m venv venv
Флаг -m указывает Python-у запустить venv как исполняемый модуль. venv/ — название виртуального окружения (где будут храниться ваши библиотеки).
В результате будет создан каталог venv/ содержащий копию интерпретатора Python, стандартную библиотеку и другие вспомогательные файлы.
Новые пакеты будут устанавливаться в venv/lib/python3.x/site-packages/
Активация
Чтобы начать пользоваться виртуальным окружением, необходимо его активировать:
- venvScriptsactivate.bat — для Windows;
- source venv/bin/activate — для Linux и MacOS.
source выполняет bash-скрипт без запуска дополнительного bash-процесса.
Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:
Также новый путь до библиотек можно увидеть выполнив команду:
python -c «import site; print(site.getsitepackages())»
Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip
Автоматическая активация
В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть ♀️).
На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash :
#!/usr/bin/env bash source $BASEDIR/venv/bin/activate python $BASEDIR/my_app.py
Теперь можно установить права на исполнение и запустить нашу обертку:
chmod +x myapp/run.sh ./myapp/run.sh
Деактивация
Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:
Альтернативы venv
На данный момент существует несколько альтернатив для venv:
- pipenv — это pipfile, pip и virtualenv в одном флаконе;
- pyenv — простой контроль версий Питона;
- poetry — новый менеджер для управления зависимостями;
- autoenv — среды на основе каталогов;
- pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
- rez — интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.
Стоит ли использовать виртуальное окружение в своей работе — однозначно да. Это мощный и удобный инструмент изоляции проектов друг от друга и от системы. С помощью виртуального окружения можно использовать даже разные версии Python!
Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry .
Источник: pythonchik.ru
Виртуальная машина — «песочница» для экспериментов
Не секрет, что по мере знакомства с операционной системой многие пользователи начинают пробовать всё новые и новые её возможности — аппетит, как известно, приходит во время еды. Не редки и те, кто хочет попробовать другие операционные системы или новые версии уже установленной системы. Возникает вопрос — как осуществить это без вмешательства в ключевые компоненты системы и риска потери важных данных? Как вернуться назад в случае неудачных действий? Ответ прост — необходима виртуализация.
Виртуальная машина — это своего рода «компьютер в компьютере» — эмулятор работы полноценного компьютера программными средствами. С её помощью можно всячески экспериментировать, не боясь что-либо испортить — ведь последствия будут минимальными и не затронут «родительскую» машину. Это своего рода «песочница» (sandbox), где «шаловливые дети» — программы могут работать без риска нанести среж программной и тем более аппаратной части компьютера. Даже ночной кошмар пользователей Windows — крах системы не затронет пользовательских данных. Любители поэкспериментировать с незнакомым софтом могут запускать его в виртуальной среде — кстати, предварительный запуск программ в безопасной среде является одним из основных средств проверки для современных антивирусов.
Однако, как и у всего в мире, у метода виртуализации имеются свои недостатки — ведь при запуске виртуальная ОС отнимает часть ресурсов основной системы. Одним из основных является проблема выделения оперативной памяти для «гостевой ОС» — ведь при работе она использует ресурсы «системы — хозяина», что не лучшим образом сказывается на работе и той и другой. Оптимальным считается выделять не более 50% оперативной памяти под работу виртуальной машины. Нижний предел пользователь выбирает сам, исходя из системных требований. Соответственно, надо делить и ресурсы графического процессора.
В силу специфичности метода виртуализации необходимо также наладить и обмен данными между системами — ведь за изолированность надо платить и файловую систему основной системы невозможно увидеть из гостевой. Для этого необходимо выделить общие папки — директории, в которых помещаются данные, предназначенные для переноса. Из гостевой системы они подключаются как общие сетевые диски — соответственно необходима и их настройка. Поддержка USB-устройств в виртуальной машине до сих пор остается головной болью пользователя.
В настоящее время в сфере виртуализации представлено множество разнообразного программного обеспечения, однако на первый план можно выдвинуть три из них — это VMware Workstation, Windows Virtual PC и Oracle WM VirtualBox. Они предоставляют наиболее полный набор программных решений для виртуализации. Ниже будет приведено их сравнение с точки зрения использования для дома.
VMware Workstation
VMware Workstation представляет собой прекрасный инструмент для виртуализации. Разработчики заявляют о поддержке более 200 типов операционных систем, которым можно выделить до 32 Гб оперативной памяти. Программа позиционируется как инструмент, предназначенный для разработчиков и тестеров ПО и является платной. Соответственно настроен и интерфейс — чтобы комфортно себя чувствовать, необходимо иметь начальные знания об установке и настройке виртуальных машин. Из преимуществ можно выделить улучшенную поддержку аппаратного ускорения 3D-графики и полную совместимость с визуальными эффектами, подобными Aero в Windows 7 и поддержку как 32- так и 64-битных систем.Однако не каждый пользователь согласится выложить $133 за программу.
Windows Virtual PC
Позиционируется как бесплатный продукт от Microsoft, что и определяет её основные характеристики. В первую очередь она предназначена для виртуализаци работы ОС семейства Windows с целью обеспечения совместимости программ с Windows 7. Довольно проста в установке и использовании, имеется поддержка USB-устройств.
Одной из особенностей является поддержка отображения разных ОС на нескольких мониторах. Следует отметить, что зачастую Virtual PC отказывается работать с несколькими ядрами на многоядерных процессорах, что снижает её эффективность. Пользователям, желающим установить Linux, придётся подыскать другие решения — официальная поддержка запуска Linux в качестве гостевой ОС отсутствует. В остальном же можно порекомендовать Windows Virtual PC в качестве программного обеспечения для домашнего использования.
Oracle WM VirtualBox
Является примером программы с открытым исходным кодом. Полностью бесплатна для домашнего использования. VirtualBox поддерживает все типы операционных систем как основных так и гостевых, что делает её незаменимым инструментом для тестов операционных систем и ПО. Поддерживает подключение ISO-образов в качестве дисковых устройств и USB-устройств.
Одним из преимуществ является поддержка многоядерных процессоров и высокая производительность. Также имеется хороший набор опций для соединения с Интернетом. На сегодняшний день VirtualBox является наилучшим решением для домашнего использования.
Источник: www.softhome.ru