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

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

Использование одного и того же интерпретатора с набором одних и тех же зависимостей может привести к таким ошибкам как, например, несовместимость версий.

Для этого в Python есть специальный модуль venv, который позволяет работать с виртуальным окружением.

Ниже приведена шпаргалка с основными операциями и более подробное описание каждой из них.

Шпаргалка

Операция \ ОСWindowsLinux / MacOS
Созданиеpython -m venv .venvpython3 -m venv .venv
Активация.\.venv\Scripts/activate.batsource ./.venv/bin/activate
Деактивацияdeactivatedeactivate

Куда устанавливаются библиотеки

Узнать место, где установлены все библиотеки можно с помощью команды pip -V. Она покажет, куда установлен сам pip.

$ pip -V
pip 23.0.1 from /home/wignorbo/.local/lib/python3.10/site-packages/pip (python 3.10)

"Чистый" путь можно получить из Python:

>>> import site
>>> site.getusersitepackages()
'/home/wignorbo/.local/lib/python3.10/site-packages'

Все, что вы устанавливаете с помощью pip install ..., попадает именно в эту директорию. Зависимости всех ваших проектов на компьютере находятся там.

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

Настройка виртуального окружения

Создание окружения

Модуль venv обычно поставляется вместе с интерпретатором Python на MacOS и Windows. На Ubuntu может потребоваться отдельная установка:

$ sudo apt install python3-venv

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

$ python -m venv --help
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps] ENV_DIR [ENV_DIR ...]

Для создания виртуального окружения перейдите в директорию с вашим проектом и воспользуйтесь следующей командой:

$ python -m venv .venv

В текущей рабочей директории будет создана папка .venv.

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

Для активации воспользуйтесь следующей командой:

$ source ./.venv/bin/activate

или в Windows:

> .\.venv\Scripts\activate.bat

После активации должен появиться специальный маркер такого вида:

(.venv) $ 

Теперь можно устанавливать библиотеки, которые будут храниться в данном виртуальном окружении.

(.venv) $ pip install flask

Посмотрим, куда он установился:

(.venv) $ pip show flask
Name: Flask
Version: 2.2.3
...
Location: /home/wignorbo/.venv/lib/python3.10/site-packages
...

Все верно - библиотека хранится в нашем виртуальном окружении.

Просмотр списка зависимостей

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

(.venv) $ pip freeze
click==8.1.3
Flask==2.2.3
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.2
Werkzeug==2.2.3

Их можно перенаправить в файл requirements.txt, который используется для хранения этих самых зависимостей.

(.venv) $ pip freeze > requirements.txt
(.venv) $ cat requirements.txt
click==8.1.3
Flask==2.2.3
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.2
Werkzeug==2.2.3

Установка библиотек из файла

Если вы клонировали чей-то проект, то все зависимости из файла requirements.txt можно установить всего одной командой:

(.venv) $ pip install -r requirements.txt

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

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

(.venv) $ deactivate

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

Ссылки