ОБСУЖДЕНИЕ Статья 

Виртуальная среда Python - основы Virtualenv

2 ответов 9,7 тыс.
Автор темы
Прежде чем устанавливать virtualenv, стоит знать: начиная с Python 3.3 в стандартную библиотеку входит встроенный модуль venv, который решает ту же задачу — создаёт изолированные окружения без установки сторонних пакетов. Многие конкуренты в выдаче разбирают именно venv как инструмент «из коробки». Однако virtualenv по-прежнему актуален: он работает и со старыми версиями Python, быстрее создаёт окружения и предоставляет дополнительные возможности (например, расширяемость через плагины). В этой статье разберём именно virtualenv, но если вы работаете с современным Python и вам достаточно базовой изоляции — обратите внимание и на venv, чтобы осознанно выбрать подходящий инструмент.



prew.jpg


Вступление​

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

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

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

На самом деле программ для создания виртуального окружения множество: Pyenv, Venv, Virtualvenvwrapper и множество других. Какие-то из них входят в PyPi (Python Package Index - репозиторий пакетов Python) какие-то нет. Но сегодня мы рассмотрим именно virtualenv, так как это, наверное, один из самых популярных инструментов для создания виртуальных окружений.

Перейдем к установки этого замечательно ПО для операционные системы Linux, под Windows будет все очень похоже, за исключением специфики этой ОС, название каталогов, их расположение и т.д.

Установка с помощью pip:
Код:
pip install virtualenv

Но так же можно собрать и из исходников:

Bash:
git clone https://github.com/pypa/virtualenv
cd
sudo python setup.py install

virtualenv_install.png


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

Создаем виртуальное окружение следующей командой:
Код:
virtualenv codeby

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

virtualenv_activation.png


Внутри папки мы видим файл pyvenv.cfg а так же две директории bin и lib.
В pyvenv.cfg как можно было понять из названия, содержаться настройки для виртуального окружения версия и путь до интерпретатора, версия virtualenv, импортировать ли библиотеки из глобального хранилища, а так же переменные окружения.

если вы хотите при создании виртуального окружения импортировать в него библиотеки из глобального хранилища библиотек, то нужно добавить ключ --system-site-packages что бы получилось virtualenv --system-site-packages codeby

В папке bin содержит скрипты для активации или де активации виртуального окружения, интерпретатор Python, используемый в рамках данного окружения, менеджер pip и ещё несколько инструментов, обеспечивающих работу с пакетами.
А в директории lib - библиотечные файлы окружения. Новые пакеты будут установлены в каталог /lib/pythonX.X/site-packages/.

Для активации виртуального окружения выполняем команду:
Код:
source codeby/bin/activate

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

virtualenv_run.png


Давайте теперь посмотрим какие у нас сейчас есть библиотеки в нашем окружении, для этого выполним команду:
Код:
pip freeze[CODE]

[ATTACH type="full" width="734px" alt="virtualenv_freeze_null.png"]42726[/ATTACH]

Как видим, список библиотек у нас пуст, пополним его установив какую нибудь библиотеку, пускай это будет requests, выполняем команду:
[CODE]pip install requests

И снова посмотрим на список библиотек командой:
Код:
pip freeze

virtualenv_install_lib.png


Теперь в нашей изолированной среде есть библиотека requests и ее зависимости.
Для того что бы закончить работу с фантомным окружением нужно выполнить команду:
Код:
deactivate

Screenshot_deactivate.png


Заключение и полезные ссылки​

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

Официальная документация по virtualenv
Шпаргалка по virtualenv
 
AI-выжимка (тезисы)
С Python 3.3 изоляция окружений доступна из коробки через venv, без установки сторонних пакетов.
Virtualenv - это инструмент для создания изолированных сред :: virtualenv создаёт папку со всеми зависимостями проекта и работает даже со старыми версиями Python.
Установка с помощью pip :: Ставится командой pip install virtualenv, либо сборкой из исходников с GitHub (репозиторий pypa/virtualenv).
Создаем виртуальное окружение следующей командой :: Команда virtualenv codeby создаёт папку окружения с pyvenv.cfg и директориями bin и lib.
ключ --system-site-packages :: Флаг --system-site-packages позволяет при создании окружения подключить библиотеки из глобального хранилища.
source codeby/bin/activate :: Активация выполняется через source codeby/bin/activate, имя окружения появляется перед приглашением командной строки.
Теперь в нашей изолированной среде есть библиотека requests :: После установки pip install requests пакеты попадают в lib/pythonX.X/site-packages, проверить можно через pip freeze.
Последнее редактирование модератором:
  • Нравится
Реакции: BlackHundred, Alex Trim, _Eliot_ и ещё 1 человек
4
А в чем проблема, юзать так: python3 -m venv codeby
 
А в чем проблема, юзать так: python3 -m venv codeby
вот тут
и вся проблема. Вообще его можно использовать если тебе не нужно поддерживать проекты на Python2.x и venv не копирует в папку виртуального окружения бинарник от питона в отличии от virtualenv.
P.S.
virtualenv вроде как и популярнее, но это ИМХО.