- Виртуальное окружение Python (venv)
- Настройка виртуального окружения
- Создание
- Активация
- Автоматическая активация
- Деактивация
- Альтернативы venv
- Использование виртуальных сред venv и virtualenv для создания окружения Python
- Для чего нужно виртуальные среды?
- Установка и создания окружения с virtualenv
- Активация и выход из окружения
- Управление средами через virtualenvwrapper
- Настройки для Linux
- Настройки для Windows
- Основные команды
- Создание виртуальных сред со встроенным пакетом Python venv
- Создание виртуального окружения в Pycharm
- Создание списка установленных пакетов Requirements.txt
- Установка и использование virtualenv в Python
- Отличия virtualenv и venv
- Установка virtualenv с помощью pip
- Создание виртуальной среды
- Деактивации virtualenv
- Удаление виртуальной среды
- Решение популярных ошибок
Виртуальное окружение Python (venv)
В се сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show
# pip3 show pytest Name: pytest Version: 5.3.2 Summary: pytest: simple powerful testing with Python Home-page: https://docs.pytest.org/en/latest/ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, . License: MIT license Location: /usr/local/lib/python3.8/site-packages Requires: more-itertools, pluggy, py, wcwidth, attrs, packaging Required-by:
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/
Активация
Чтобы начать пользоваться виртуальным окружением, необходимо его активировать:
- venv\Scripts\activate.bat — для Windows;
- source venv/bin/activate — для Linux и MacOS:
source выполняет bash-скрипт без запуска дополнительного bash-процесса.
Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:
Также новый путь до библиотек можно увидеть выполнив команду:
python -c «import site; print(site.getsitepackages())»
Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip
Автоматическая активация
В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷♀️ )
На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash
Теперь можно установить права на исполнение и запустить нашу обертку:
chmod +x myapp/run.sh ./myapp/run.sh
Деактивация
Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:
Альтернативы venv
На данный момент существует несколько альтернатив для venv:
- pipenv — это pipfile, pip и virtualenv в одном флаконе;
- pyenv — простой контроль версий Питона;
- poetry — новый менеджер для управления зависимостями;
- autoenv — среды на основе каталогов;
- pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
- rez — интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.
Стоит ли использовать виртуальное окружение в своей работе – однозначно да. Это мощный и удобный инструмент изоляции проектов друг от друга и от системы. С помощью виртуального окружения можно использовать даже разные версии Python!
Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry .
Источник
Использование виртуальных сред venv и virtualenv для создания окружения Python
Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.
Навигация по посту
Для чего нужно виртуальные среды?
При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:
- Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через «pip list» на старом компьютере, который выведет множество лишних модулей.
- Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.
Использование виртуальных сред избавляет вас от этих проблем. В таком виртуальной среде находится свой интерпретатор, свой pip и все пакеты относятся только к нему. Так же, весь проект, можно перенести как папку на другой компьютер без ошибок.
Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.
Установка и создания окружения с virtualenv
Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:
Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:
Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:
- PermissionError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6’
- Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv
Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:
Я использую Python 3.6, и так я создам окружение в папке projectname/venv:
Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:
Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:
Активация и выход из окружения
Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.
В случаях с Linux указываем полный путь до venv/bin/activate:
Для активации в Windows, в папке venv\Scripts есть несколько файлов:
- activate.ps1 — для активации через Powershell;
- activate.bat — для активации через CMD.
Для активации просто укажите полный путь до файла. Например:
О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:
Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:
Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.
Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:
Для CMD нужно указать путь до файла «venv\Scripts\deactivate.bat».
Управление средами через virtualenvwrapper
Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.
Благодаря этому пакету мы сможем запускать ваши окружения так:
Для Windows нужно установить следующий пакет:
Для Linux нужно так же использовать sudo:
Настройки для Linux
Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:
Следующая команда добавит скрипты в домашний каталог для удобной работы:
При выполнении предыдущей команды у меня появилась ошибка:
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader
Она исправилась добавлением переменной в env с путем до нужного интерпретатора:
Настройки для Windows
Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:\Users\%USERNAME%\Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:
Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.
Основные команды
Далее мы можем использовать следующие команды (основные):
- mkvirtualenv — создание окружения;
- lsvirtualenv — отображение списка окружений;
- rmvirtualenv — удаление;
- workon — переключение между виртуальными средами;
- deactivate — выход из текущего окружения.
Так мы создадим виртуальную среду:
Так выйдем из созданной среды:
Если нужно использовать другую версию Python:
Создание виртуальных сред со встроенным пакетом Python venv
Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:
Проверить, то что пакет venv установлен, можно так:
Следующая команда создаст виртуальную среду:
Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.
Активация окружения выполняется следующим образом:
Для выхода из окружения:
Создание виртуального окружения в Pycharm
В некоторых IDE, например Pycharm, консоль встроенная и по умолчанию у вас будет запускаться интерпретатор выбранный в настройках. В Pycharm вы можете создать или изменить проект привязав его к определенному интерпретатору.
Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:
В новом окне выбрать название проекта, место для копирования, интерпретатор и нажать кнопку создания окружения:
Для настройки окружения для старых проектов нужно зайти в настройки:
Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):
Создание списка установленных пакетов Requirements.txt
Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.
Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:
Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):
На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:
Источник
Установка и использование virtualenv в Python
virtualenv — это инструмент для создания изолированной среды Python. У такой среды есть отдельна установка python, при ее использовании загруженные библиотеки недоступны другим. Можно сделать так, чтобы у этой среды не было доступа к глобальным библиотекам.
Virtualenv — простой и рекомендованный способ настройки среды Python.
Отличия virtualenv и venv
Venv — это пакет, который идет по умолчанию с Python 3.3+. В версии Python 2 его нет.
Virtualenv — более продвинутая библиотека. По ссылке можно ознакомиться с основными отличиями.
Виртуальную среду можно создать и с помощью venv, но все-таки рекомендуется установить и использовать virtualenv для полноценной работы.
Установка virtualenv с помощью pip
Для установки virtualenv с Python нужно использовать pip. Желательно предварительно обновить этот инструмент.
Или используйте python3 , если python ссылается на 2 версию.
После обновления можно установить и virtualenv:
Создание виртуальной среды
1. Перейдите в директорию, в которой вы хотите создать виртуальную среду(например папка проекта).
2. Создайте виртуальную среду, при необходимости указав конкретную версию Python. Следующая команда создает virtualenv с именем venv_name и использует флаг -p , чтобы указать полный путь к версии Python:
Назвать среду можно как угодно
После выполнения команды вы увидите логи:
Эта команда создает локальную копию среды. Работая с ней, важно не забывать об активации, чтобы использовались нужные версии конкретных инструментов и пакетов.
Если при установке возникла ошибка setuptools pip failed with error code 1` error , используйте следующую команду, чтобы решить проблему:
3. Для активации новой виртуальной среды используйте команду:
После этого название текущей среды отобразится слева от символа ввода: (venv_name) username@desctop:
Теперь при установке любого пакета с помощью pip он будет размещаться в папках этой среды, изолированно от глобальной установки.
Деактивации virtualenv
После завершения работы деактивировать виртуальную среду можно с помощью команды deactivate .
Введите ее и приставка venv_name пропадет. Вы вернетесь к использованию глобально версии python.
Удаление виртуальной среды
Для удаления виртуальной среды достаточно просто удалить папку проекта. Для этого используется следующая команда:
Решение популярных ошибок
Ошибки при создании virtualenv. При попытке создать virtualenv с Python 3.7 могут возникнуть следующие ошибки.
Для их исправления нужно добавить следующую строку в .bash_profile.
Использование полного пути к виртуальной среде. Может быть такое, что при использовании команды virtualenv будет использована не та версия. Для решения проблемы нужно лишь задать полные пути как к virtualenv, так и к Python в системе.
А получить их можно с помощью этой команды:
Источник