Виртуальные окружения — 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 через bash в vs code?
Начал изучать python. Использую VS code с bash в качестве терминала на windows. Не получается запустить venv через терминал. Перешел в папку с venv и ввел команду:
.\\Scripts\\activate
И ничего не произошло. По крайней мере терминал никак визуально не изминился. На стандартное из документации
.\Scripts\activate
bash убирает слеши и ругается, что такой команды нет. Что я делаю не так? Скриншот:
Меню
Используем виртуальное окружение для Python в VS Code
На очередном py-проекте понадобилось виртуальное окружение, при этом используется VS Code в качестве IDE. Существующие гайды, которые попались, либо неполные, либо устаревшие, либо очень пространные. Решил добить тему, сделать быстрый пошаговый гайд для конкретного набора: venv + VS Code под Windows 1. Запустить VS Code от имени администратора, перейти в каталог проекта в PowerShell, выполнить код ниже, появится папка env, содержащая файлы виртуального окружения python -m venv env 2. Изменить политику, в PowerShell набрать Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 3. Войти в папку окружения (env), выполнить команду env\Scripts\activate.ps1 4. Впереди в PowerShell появится маркер окружения (env), но VS Code может о нем все еще ничего не знать. Нажать Ctrl+Shift + P, набрать Python: Select Interpreter
Указать нужный путь к python.exe в папке окружения env, это отобразится внизу в панели состояния. Профит! Теперь можно устанавливать модули только для конкретного проекта. 5. Если нужно будет выйти, то в PowerShell выполнить deactivate, в выборе интерпетатора вернуться на глобальный.
Как создать виртуальное окружение на питоне в VS code?
Недавно начал осваивать питон, учусь по этому гайду создавать бота в телеграмме https://habr.com/ru/post/495036/
Я так понимаю, что после третьей строчки сверху, должно создаться то самое окружение и в консоли также вначале всегда будет его название(«venv» как на скрине), но у меня этого не выходит
Подумал, что может все ок, иду дальше. Flask установился, все хорошо
Дальше идет вот это
И продвинуться дальше я не смог, потому что при вводе (venv)$ export FLASK_APP=app.py, вылетает ошибка: export : Имя «export» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени,
а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ export FLASK_APP=app.py
+ $$
+ CategoryInfo : ObjectNotFound: (export:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Надеюсь на вашу помощь, немного обидно, что делаешь все строго по инструкции, а по факту у тебя почему-то ничего не работает
- Вопрос задан более двух лет назад
- 6291 просмотр
