Виртуальное окружение
Представь, что у тебя два проекта. Для одного требуется Джанго версии 1.6, а для другого – 1.10. Установленной можно иметь только одну версию пакета.
Пришлось бы каждый раз при переключении между этими проектами удалять одну версию пакета и устанавливать другую. Это неудобно и раздражает. А если таких пакетов много, то терпеть подобное совершенно невозможно.
virtualenv
Решение в установке всех пакетов для каждого проекта отдельно. Модули можно устанавливать не глобально, а в отдельную кучку для каждого проекта.
Такая кучка называется виртуальным окружением.
Умение пользоваться виртуальным окружением – мастхев, без него даже на Девмане будет неуютно.
Прочитай про виртуальные окружения из “Автостопом по Питону”. Там всё, что надо знать про virtualenv.
$ virtualenv название_папки_виртуального_окружения $ source название_папки_виртуального_окружения/bin/activate
virtualenvwrapper
Виртуальное окружение – удобная штука, но добавляет пару действий: при переключении к другому проекту в него нужно зайти, вспомнить, где живёт окружение и активировать его.
Тут помогает virtualenvwrapper: он привносит структуру и порядок в работу с виртуальными окружениями.
Как установить и пользоваться написано по ссылке выше.
venv
Стандартное решение для создания виртуальных окружений в Питоне версии 3.3 и старше. Различия с virtualenv минимальны. Ссылка на документацию.
- Идет в комплекте с Питоном3.
- Считается решением по умолчанию, а значит, меньше проблем с совместимостью.
- Создаёт framework-build Питона вместо обыкновенного для OSX. Такой билд необходим для правильной работы некоторых библиотек, к примеру, matplotlib и pyplot. Подробнее об этом можно почитать здесь.
- Нет надстроек, написанных для virtualenv .
Как создать виртуальное окружение:
$ python3 -m venv --copies /полный/путь/до/папки/виртуального/окружения $ # --copies активирует копирование файлов вместо создания symlinks. С последними не дружит PyCharm. $ # в Ubuntu доступна также короткая запись — alias pyvenv $ pyvenv папка/для/виртуального/окружения
Если удобного псевдонима в ОС нет, то его можно создать самостоятельно. Добавь себе в .bashrc (для Linux) или в .bash_profile (для Маков) строку:
pyvenv() /usr/local/bin/python3 -m venv --copies ./$1; >
Бонус для маководов
Если у тебя Макось, то в качестве оболочки терминала рекомендую iTerm2. Он умеет много полезного по сравнению с обычным терминалом.
Например, можно повесить на горячую клавишу создание нового окна и активацию виртуального окруженения.
У меня так: нажимаю ⌃⌘D – и я уже в папке Девмана с активированным окружением. Красота!
Это делается в настройках, вкладке Profiles. Вот как у меня:
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Python. Урок 17. Виртуальные окружения
![]()
Продолжаем серию “ Python .Уроки”. На этот раз мы изучим, что такое виртуальные окружения в Python , зачем они нужны и как их использовать. Познакомимся с инструментами virtualenv и venv для создания виртуальных окружений.
- Что такое виртуальное окружение и зачем оно нужно?
- ПО позволяющее создавать виртуальное окружение в Python
- virtualenv
- Установка virtualenv
- Создание виртуального окружения
- Активация виртуального окружения
- Деактивация виртуального окружения
- Создание виртуального окружения
- Активация виртуального окружения
- Деактивация виртуального окружения
Что такое виртуальное окружение и зачем оно нужно?
При разработке Python- приложений или использовании решений на Python , созданных другими разработчиками, может возникнуть ряд проблем, связанных с использованием библиотек различных версий. Рассмотрим их более подробно.
Во-первых : различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться.
Во-вторых : может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, т.е. вы установили приложение и хотите, чтобы оно работало независимо от того обновляются у вас библиотеки или нет. Как вы понимаете, если оно будет использовать библиотеки из глобального хранилища ( /usr/lib/pythonXX/site-packages ), то, со временем, могут возникнуть проблемы.
В-третьих : у вас просто может не быть доступа к каталогу /usr/lib/pythonXX/site-packages .
Для решения данных вопросов используется подход, основанный на построении виртуальных окружений – своего рода песочниц, в рамках которых запускается приложение со своими библиотеками, обновление и изменение которых не затронет другие приложение, использующие те же библиотеки.
ПО позволяющее создавать виртуальное окружение в Python
Программное обеспечение, которое позволяет создавать виртуальные окружения в Python можно разделить на те, что входят в стандартную библиотеку Python и не входят в нее. Сделаем краткий обзор доступных инструментов (хороший пост на эту тем есть на stackoverflow ).
Начнем с инструментов, которые входят в PyPI . Если кто не знает PyPI – это Python Package Index ( PyPI ) – репозиторий пакетов Python , доступный для любого разработчика и пользователя Python ( ).
Это, наверное, одни из самых популярных инструментов, позволяющих создавать виртуальные окружения. Он прост в установке и использовании. В сети довольно много руководств по virtualenv , самые интересные, на наш взгляд, будут собраны в конце урока в разделе “Полезные ссылки”. В общем, этот инструмент нужно обязательно освоить, как минимум, потому что описание развертывания и использования многих систем, созданных с использованием Python , включает в себя процесс создания виртуального окружения с помощью virtualenv .
Инструмент для изоляции версий Python . Чаще всего применяется, когда на одной машине вам нужно иметь несколько версий интерпретатора для тестирования на них разрабатываемого вами ПО.
virtualenvwrapper
Virtualenvwrapper – это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет plug-in ’ов.
Существуют ещё инструменты и plug-in ’ы, выполняющие работу по изоляции частей системы Python , но мы их не будем рассматривать.
Инструменты, входящие в стандартную библиотеку Python .
Этот модуль появился в Python3 и не может быть использован для решения задачи изоляции в Python2 . По своему функционалу очень похож на virtualenv . Если вы работаете с третьим Python , то можете смело использовать данный инструмент.
virtualenv
Будем рассматривать работу с virtualenv в рамках операционной системы Linux . Для Windows все будет очень похоже, за исключением моментов, связанных со спецификой этой ОС: названия и расположение каталогов, запуск скриптов оболочки и т.п.
Установка virtualenv
Virtualenv можно установить с использованием менеджера pip (ссылка на статью), либо скачать исходные коды проекта и установить приложение вручную.
Установка с использованием pip.
Для установки virtualenv откройте консоль и введите следующую команду:
> pip install virtualenvУстановка из исходного кода проекта.
В этом случае, вам нужно будет выполнить чуть большее количество действий.
Введите в консоли следующий набор команд:
> curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz > tar xvfz virtualenv-X.X.tar.gz > cd virtualenv-X.X > [sudo] python setup.py install
X.X – это версия приложения, ее вам нужно знать заранее.
Если использовать ключевое слово sudo , инструмент будет установлен глобально, в противном случае – локально.
Мы рекомендуем вам использовать pip для установки virtualenv .
Создание виртуального окружения
Виртуальное окружение создается следующей командой:
> virtualenv PRG1PRG1 в данном случае – это имя окружения.
После выполнения данной команды, в текущем каталоге будет создан новый каталог с именем PRG1 . Разберем более подробно его содержимое.
RPG1/bin/ – содержит скрипты для активации/деактивации окружения, интерпретатор Python , используемый в рамках данного окружения, менеджер pip и ещё несколько инструментов, обеспечивающих работу с пакетами Python . В Windows, это каталог PRG1\Scripts
PRG1/include/ и PRG1/lib/ – каталоги, содержащие библиотечные файлы окружения. Новые пакеты будут установлены в каталог PRG1/lib/pythonX.X/site-packages/ .
Активация виртуального окружения
Для активации виртуального окружения воспользуйтесь командой (для Linux ):
> source PRG1/bin/activateдля Windows команда будет выглядеть так:
> PRG1\Scripts\activate.batКоманда source выполняет bash- скрипт без запуска второго bash- процесса.
Если команда выполнилась успешно, то вы увидите, что перед приглашением в командной строке появилась дополнительная надпись, совпадающая с именем виртуального окружения.

При этом в переменную окружения PATH , в самое начало, будет добавлен путь до директории bin , созданного каталога RPG1 .
Если вы создадите виртуальное окружение с ключем –system-site-packages :
> virtualenv --system-site-packages PRG1то в рамках окружения PRG1 вы будите иметь доступ к глобальному хранилищу пакетов:
-
- в Linux : /usr/lib/pythonX.X/site-packages
- в Windows : \PythonXX\Lib\site-packages
Деактивация виртуального окружения
Для деактивации виртуального окружения (выхода из него), введите команду deactivate для Linux или deactivate.bat , если вы работаете в Windows .
> deactivate
venv
Устанавливать venv не нужно, т.к. он входит в стандартную библиотеку Python . Т.е. если вы установили себе Python , то venv у вас уже есть. Помните, что venv работает только в Python3 !
Создание виртуального окружения
Для создания виртуального окружения с именем PRG2 с помощью venv выполните следующую команду:
> python -m venv PRG2В результате будет создан каталог PRG2 со структурой похожей на ту, что была описана для virtualenv . Функциональное назначение каталогов тоже самое.
Активация виртуального окружения
Активация виртуального окружения в Linux выполняется командой:
>source PRG2/bin/activate>PRG2\Scripts\activate.batДеактивация виртуального окружения
Деактивация выполняется командой deactivate (работает как в Windows, так и в Linux )
>deactivateПолезные ссылки
Ниже приведен список полезных ссылок, для того, чтобы более глубоко изучить тему создания виртуальных окружений в Python .
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Виртуальные окружения — Python: Настройка окружения
Вы уже знаете, что pip устанавливает пакеты в одно из двух окружений — в общесистемное или пользовательское. Интерпретатор Python при импорте модуля или пакета ищет его сначала в пользовательском окружении, затем — в общесистемном. Такая последовательность позволяет пользователю иметь нужные именно ему версии библиотек и Python-программ.
Но даже двух окружений недостаточно, когда программист начинает работать с несколькими проектами, ведь разные проекты могут иметь разные наборы зависимостей. Еще более тяжелый случай: разные проекты могут зависеть от общей библиотеки, но требовать разные ее версии — тогда происходит конфликт версий.
Очевидно, что разработчику на Python нужен какой-то механизм, позволяющий содержать разные проекты в изолированных песочницах. Такой механизм существует. Он называется виртуальные окружения.
Устройство виртуальных окружений
Каждое виртуальное окружение представляет собой директорию. Ее содержимое структурно напоминает общесистемное окружение — поддиректории соответственно названы и наполнены. Давайте рассмотрим пример:
env env ├── bin │ ├── activate │ … │ ├── pip │ … │ └── python3 -> …/python3 ├── lib │ └── python3.6 │ └── site-packages │ ├── pip │ │ ├── … │ … │ └── setuptools-40.6.2.dist-info │ ├── … …В директории виртуального окружения находится директория bin/ , внутри которой расположены:
- Копия интерпретатора под именем python3 (символическая ссылка на оригинал)
- Копия исполняемого файла pip
В соседней директории по пути lib/python3.6/site-packages есть библиотеки, уже установленные в окружение. Как правило, только что созданное окружение имеет:
- Установленный пакет pip (исполняемый файл bin/pip — его точка входа)
- Пакет Setuptools
Эти два пакета составляют необходимый минимум для разработки проекта на Python.
При работе в окружении нужно запускать не системные Python и pip, а исполняемые файлы из директории bin . Когда интерпретатор Python находится в окружении, он знает, где находятся все доступные пакеты. Интерпретатор находит их по относительному пути ../lib/python3.6 . В таком случае копия pip из директории bin/ устанавливает пакеты в это же окружение, не затрагивая систему. Получается та самая изоляция, о которой мы говорили в начале урока.
Создание виртуального окружения
Вручную создавать всю описанную иерархию директорий и файлов не нужно — для этого есть специальный модуль venv .
В macOS и Windows этот модуль входит в поставку Python. На Ubuntu его нужно установить отдельно командой:
sudo apt install python3-venvПроверим, что модуль установился и готов к использованию:
-m venv --help usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR . ]Обычно окружение создается командой python3 -m venv имя_окружения . Давайте попробуем создать виртуальное окружение и установить туда пакет cowsay :
Вы можете видеть, что пакет устанавливается вместе с точкой входа, которую можно вызвать командой first_venv/bin/cowsay . Также сам пакет становится доступен интерпретатору, но только тому, что был запущен из окружения.
В таком виде виртуальное окружение уже можно использовать полноценно. Но постоянно вводить команды с префиксом first_venv/bin/ не очень удобно. Есть способ упростить вызов команд, доступных в окружении — это активация.
Активация окружения
При создании окружения в поддиректорию bin помещается сценарий оболочки, который на macOS и Ubuntu называется activate , а на Windows — activate.bat . Чтобы выполнить этот сценарий, нужно вызвать команду:
- на macOS и Ubuntu:
source first_venv/bin/activate- на Windows:
\> first_venv\Scripts\activate.batВ команде выше обратите внимание, что в Windows поддиректория с исполняемыми файлами называется не bin , а Scripts .
На Ubuntu активация выглядит следующим образом:
После активации отпала необходимость указывать путь до вызываемого исполняемого файла. Теперь cowsay и python вызываются без префикса, но это все те же команды из окружения.
Еще изменилось приглашение оболочки: в нем стало отображаться имя окружения. Это работает на macOS и Ubuntu и всегда напоминает, что мы находимся в виртуальном окружении.
Деактивация окружения делается командой deactivate , которая становится доступна после активации.
Активация и деактивация окружения влияют только на текущую сессию — то есть заметны только в этом конкретном терминале. Это удобно, потому что так можно иметь несколько окружений и активировать их одновременно в разных окнах терминала.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Python venv — виртуальное окружение
Начиная с версии Python 3.3. Модуль venv предоставляет поддержку создания легковесного виртуального окружения с собственными директориями, изолированными от общих системных. Каждое виртуальное окружение имеет свой собственный набор бинарных исполняемых файлов и может иметь собственный независимый набор установленных пакетов.
Для создания виртуального окружения
# Создать директорию проекта mkdir next-porject cd next-project # Инициализировать окружение python3 -m venv .venv # Активировать окружение source .venv/bin/activateВторой аргумент .venv , указывает имя директории где будет создано виртуальное окружение.
следует исключить вирутальное окружение из Git, добавив путь в
файл .gitignoreПеред тем как использовать или устанавливать пакеты, следует активировать виртуальное окружение:
source .venv/bin/activateМожно проверить путь к исполняемому файлу после активации: which python .
После активации python, pip будут указывать на виртуальную директорию. Перед началом использования обновим некоторые модули
# Активировать окружение # source .venv/bin/activate python -m pip install --upgrade pip setuptoolsТеперь можно начинать работу, все как обычно
# Активировать окружение # source .venv/bin/activate # установить пакеты pythom -m pip install django # инициализация проекта django django-admin startproject config .«Выключить» окружение можно командой deactivate
Sign up for more like this.
Enter your email

Работа с форками
Форки (Forks) позволяют внести изменения в проект без изменения кода основного репозитория. После ответвления репозитория, можно продолжать получать изменения из основного, и отправлять свои правки через запросы на изменения (pull request). Форк может быть персональным, или принадлежать организации. Обычно форки используются для отработки идей и изменений перед тем, как принять
19 нояб. 2023 г. 1 min read
slimrb
Преобразование Slim в Erb. slimrb консольная утилита запускается в командной строке. Использование Slim в качестве основного шаблонизатора очень удобно и продуктивно. Но накладывает ограничения на форматирование. Не всегда удобно, когда в команде работают специалисты разного уровня подготовки. Для сложных и объемных страниц может быть сложным. Slim — супер решение, но
13 июня 2023 г. 1 min read
Nuxt: взгляд в 2023
Результатом многолетней работы стал не только выпуск новой версии Nuxt (3), но новая архитектура, функциональная серверная среда (Nitro) и новая организационная экосистема в Github (UnJs)
