Перейти к содержимому

Как активировать venv django

  • автор:

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

Представь, что у тебя два проекта. Для одного требуется Джанго версии 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: Настройка окружения

Вы уже знаете, что 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 студентов

Наши выпускники работают в компаниях:

Установка Django

Примечание: если ты используешь Chromebook, пропусти эту главу, но выполни инструкции по настройке для Chromebook

Примечание: если ты уже выполнила установку — можешь пропустить эту часть и сразу перейти к следующей главе!

Отдельные части этой главы основаны на учебных пособиях Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).

Отдельные части этой главы основаны на учебном пособии django-marcador, лицензированном под Creative Commons Attribution-ShareAlike 4.0 International License. Руководство django-marcador защищено авторским правом Markus Zapke-Gründemann et al.

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

Перед установкой Django мы попросим тебя установить крайне полезный инструмент, который поможет тебе содержать среду разработки в чистоте. Можно пропустить этот шаг, но мы очень советуем этого не делать. Использование лучших рекомендаций с самого начала убережёт от многих проблем в будущем!

Итак, давай создадим виртуальное окружение (оно также называется virtualenv). Virtualenv будет изолировать настройки Python/Django для каждого отдельного проекта. Это значит, что изменения одного сайта не затронут другие сайты, которые ты разрабатываешь. Удобно, правда?

Всё, что тебе нужно сделать — найти директорию, в которой мы создадим virtualenv ; домашний каталог вполне подойдёт. Для Windows адрес будет выглядеть так: C:\Users\Name (где Name — твоё имя пользователя).

Примечание: Если ты работаешь в Windows, удостоверься, что в названии директории нет специальных символов или символов с диакритическими знаками; если в твоём имени пользователя есть такие символы, выбери другую директорию, например, C:\djangogirls .

Мы будем использовать отдельную директорию djangogirls в домашнем каталоге:

$ mkdir djangogirls $ cd djangogirls 

Мы создадим виртуальное окружение под именем myvenv . В общем случае команда будет выглядеть так:

$ python3 -m venv myvenv 

Виртуальное окружение: Windows

Чтобы создать новое virtualenv , тебе нужно открыть командную строку и набрать python -m venv myvenv . Это будет выглядеть так:

C:\Users\Name\djangogirls> python -m venv myvenv 

Здесь myvenv — имя твоего virtualenv . Ты можешь выбрать другое имя, но используй только строчные буквы, без пробелов и специальных символов. Имя виртуального окружения выбирай покороче — тебе придётся часто его набирать!

Виртуальное окружение: Linux и OS X

В Linux и OS X достаточно набрать python3 -m venv myvenv , чтобы создать virtualenv :

$ python3 -m venv myvenv 

myvenv — имя виртуального окружения virtualenv . Можешь выбрать другое имя, но используй только строчные буквы и никаких пробелов. Имя виртуального окружения лучше выбирать покороче — набирать его предстоит не раз!

Примечание: В некоторых версиях Debian/Ubuntu может произойти следующая ошибка:

command-line

The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command. apt install python3-venv You may need to use sudo with that command. After installing the python3-venv package, recreate your virtual environment. 

В таком случае следуй приведённым инструкциям и установи пакет python3-venv :

command-line

$ sudo apt install python3-venv 

Примечание: В некоторых версиях Debian/Ubuntu при таком способе создания виртуального окружения ты можешь получить такую ошибку:

command-line

Error: Command '['/home/eddie/Slask/tmp/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1 

Чтобы обойти её, используй команду virtualenv .

command-line

$ sudo apt install python-virtualenv $ virtualenv --python=python3.8 myvenv 

Примечание: Если ты получаешь следующую ошибку

command-line

E: Unable to locate package python3-venv 

то запусти команду:

command-line

sudo apt install python3.8-venv 

Работаем с virtualenv

Указанная выше команда создаст директорию myvenv (или другую, в зависимости от выбранного тобой имени), которая будет содержать виртуальное окружение (по сути — набор файлов и папок).

Работаем с virtualenv: Windows

Запусти виртуальное окружение, выполнив:

C:\Users\Name\djangogirls> myvenv\Scripts\activate 

ПРИМЕЧАНИЕ: в Windows 10 при работе в Windows PowerShell ты можешь получить ошибку вида execution of scripts is disabled on this system . В этом случае открой ещё одно окно Windows PowerShell, выбрав опцию «Запустить от имени Администратора». Затем перед использованием виртуального окружения попробуй запустить следующую команду:

command-line

C:\WINDOWS\system32> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A 

Работаем с virtualenv: Linux и OS X

Запусти виртуальное окружение, выполнив:

$ source myvenv/bin/activate 

Не забудь поменять myvenv на выбранное тобой имя для virtualenv !

ПРИМЕЧАНИЕ: иногда команда source может быть недоступна. В таком случае используй следующий метод:

command-line

$ . myvenv/bin/activate 

Ты поймёшь, что virtualenv запущено, когда увидишь префикс (myvenv) в начале приглашения командной строки.

При работе с виртуальным окружением команда python будет автоматически обращаться к правильной версии языка, так что ты можешь использовать просто python вместо python3 .

Отлично, теперь мы будем хранить все важные зависимости в одном месте. Наконец можно установить Django!

Установка Django

После запуска virtualenv ты можешь установить Django.

Перед этим мы должны удостовериться, что у тебя установлена последняя версия pip — программы, которую мы используем для установки Django.

(myvenv) ~$ python3 -m pip install --upgrade pip 

Установка библиотек через указание требований

Файл с требованиями (requirements) хранит список зависимостей, которые нужно установить с помощью pip install :

Для начала создай файл requirements.txt внутри директории djangogirls/ , используя текстовый редактор, который ты установила ранее. Просто создай в редакторе новый файл, а затем сохрани его под именем requirements.txt в директории djangogirls/ . После этого твоя директория будет выглядеть так:

djangogirls └───requirements.txt 

В файл djangogirls/requirements.txt нужно добавить такой текст:

Django~=3.2.10 

Теперь выполни команду pip install -r requirements.txt , чтобы установить Django.

(myvenv) ~$ pip install -r requirements.txt Collecting Django~=3.2.10 (from -r requirements.txt (line 1)) Downloading Django-3.2.10-py3-none-any.whl (7.1MB) Installing collected packages: Django Successfully installed Django-3.2.10 

Установка Django: Windows

Если при запуске pip в Windows ты получаешь сообщение об ошибке, проверь, что путь к директории с проектом не содержит пробелов или специальных символов ( C:\Users\User Name\djangogirls ). Если проблема в этом, то, пожалуйста, перенеси свой проект в другое место, адрес которого не будет содержать пробелов и специальных символов (предлагаем C:\djangogirls ). Создай новое виртуальное окружение в новой директории, после этого удали старое и попробуй запустить команды выше заново (перемещение виртуального окружения не сработает, поскольку в нём используются абсолютные пути).

Установка Django: Windows 8 и Windows 10

При попытке установки Django твоя командная строка может зависнуть. Если это произошло, вместо приведённой выше команды используй:

command-line

C:\Users\Name\djangogirls> python -m pip install -r requirements.txt 

Установка Django: Linux

При возникновении ошибки при вызове pip под Ubuntu 12.04, пожалуйста, запусти `python -m pip install -U —force-reinstall pip`, чтобы исправить установку pip в virtualenv.

Вот и всё! Теперь ты (наконец-то) готова создать своё Django-приложение!

Виртуальное окружение venv.

Все сторонние модули устанавливаются с помощью PIP глобально, но в большинстве случаев — установка модулей глобально это плохая идея. Допустим, вы работаете над проектом MyShop и занимаетесь поддержкой проекта MySocial и оба из них используют Django , но проблема в том, что проект MyShop работает на Django 4.2 , а проект MySocial на Django 2.2 и Python не может различить для какого проекта какую версию использовать, поэтому он использует ту, которую установили последней и решением этой проблемы как раз таки занимается venv (virtual environment)

Как вы уже могли догадаться — основная цель виртуального окружения это создание изолированной среды для проекта

Как создать виртуальное окружение?

Устанавливать venv не нужно — он входит в стандартную библиотеку Python

Создание

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

Для Windows и Linux:

python -m venv

Для macOS:

python3 -m venv

После этого немного ждём и у нас появляется наше окружение, например здесь я создал окружение с именем venv :

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

Создание окружения — это только начало, дальше нам надо активировать его, что бы начать пользоваться. И во время написания этой статьи я столкнулся с проблемой, что PowerShell (через него я работаю в VS Code) не может активировать окружение и немного почитав документацию, я нашёл решение для этого, поэтому давайте разбираться как активировать виртуальное окружение в разных средах

POSIX:

bash/zsh:

$ source /bin/activate

fish:

$ source /bin/activate.fish

csh/tcsh:

$ source /bin/activate.csh

Windows:

cmd.exe:

C:\> \Scripts\activate.bat

PowerShell:

PS C:\> \Scripts\Activate.ps1

Тут у вас может возникнуть ошибка:

Для её решения достаточно прописать следующую команду:

PS D:\django-proj> Set-ExecutionPolicy -Scope CurrentUser

После чего в терминале (может ошибаюсь в понятие), появится следующий запрос:

PS D:\django-proj> Set-ExecutionPolicy -Scope CurrentUser Укажите значения для следующих параметров: ExecutionPolicy:

Тут мы указываем AllSigned что бы запускать файлы с расширением .ps1 в частности

Как понять что виртуальное окружение активировано?

Что бы понять, активировали мы окружение или нет, достаточно посмотреть на наш терминал

Если активировалось, то мы увидим уведомление о том, что сейчас мы работаем в виртуальном окружение

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

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

запускать файлы так же, например:

python3 manage.py runserver

и так далее по списку

Как деактивировать виртуальное окружение?

Тогда появляется следующий логичный вопрос, а как тогда деактивировать виртуальное окружение? Достаточно прописать команду:

deactivate

И тогда мы выйдем из виртуального окружения.

Альтернативы venv

На данный момент существует несколько альтернатив для venv :

  • pipenv — это pipfile , pip и virtualenv в одном флаконе.
  • pyenv — простой контроль версий Питона.
  • poetry — новый менеджер для управления зависимостями.
  • autoenv — среды на основе каталогов.
  • pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python.

Возможно, я разберу poetry , pyenv или pipenv

НА ЭТОМ ВСЁ

Сегодня мы разобрались с виртуальным окружением venv и узнали как с ним работать.

Если понравилась статья — поделись ей с другом.

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

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