venv - средство для создания так называемых "виртуальных сред" Python. В данном материале мы разберем что такое виртуальная среда, зачем она нужна, и как начать ей пользоваться.
Представим, что вы в своем проекте захотели использовать какую-нибудь библиотеку, будь то Flask или numpy. Чтобы ее установить, вы открываете консоль и набираете:
pip install numpyПосле этого пакет numpy устанавливается глобально. Данный подход имеет несколько проблем:
- Установка (или обновление) пакета глобально может сломать системные программы (в основном на Unix-like системах).
- Наверняка вы работаете с разными проектами, каждый из которых зависит от разных пакетов. Если все пакеты устанавливать глобально, то ваш набор пакетов будет бесконтрольно разрастаться.
- Вы не сможете удалить (или обновить) пакет, не рискуя сломать один из ваших проектов.
Виртуальная среда - это директория, в которой есть отдельный интерпретатор Python и изолированный от остальной системы набор пакетов. Создавая виртуальную среду для каждого проекта, вы сможете изолировать его зависимости от других проектов. А еще, вы сможете просто удалить виртуальную среду, если она вам больше не нужна.
Открываем консоль, переходим в директорию с вашим проектом и запускаем следующую команду:
python3 -m venv venvКоманда создает новую виртуальную среду в директории venv.
Далее, нам необходимо активировать виртуальную среду:
# Windows (cmd.exe)
venv\Scripts\activate.bat
# Linux/macOS
source venv/bin/activateТеперь, когда вы будете использовать python или pip в этой консоли, то будет использоваться интерпретатор и набор пакетов из этой виртуальной среды.
Давайте проверим, установим пакет numpy:
$ pip install numpy
Collecting numpy
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/e6/3a/8467d1aaf1f5bba88e5385c6c0c477153fa27adfebdade265b648db3dcf4/numpy-1.18.4-cp36-cp36m-macosx_10_9_x86_64.whl (15.2MB)
100% |████████████████████████████████| 15.2MB 73kB/s
Installing collected packages: numpy
Successfully installed numpy-1.18.4
$ python
Python 3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
# Работает, без ошибок
>>>После того, как вы закончите работу с этим проектом, можете просто закрыть окно консоли или деактивировать виртуальную среду командой deacivate.
Чтобы удалить виртуальную среду вместе со всеми пакетами, достаточно просто удалить директорию venv.
Начинайте свои проекты с создания venv. Если сейчас вам это кажется неудобным или излишним, вам в любом случае рано или поздно придется столкнуться с использованием виртуальной среды.
Использование venv - это удобно и позволяет избежать неприятных проблем. Популярные среды разработки из коробки поддерживают venv (например PyCharm или VS Code с расширением Python).
- Документация venv - https://docs.python.org/3/library/venv.html