Модуль venv: создание виртуальной среды в Python

В этом руководстве вы узнаете о виртуальных средах Python и о том, как использовать модуль venv для создания виртуальной среды.

Содержание

Зачем вам нужны виртуальные среды Python?

Python при установке сохраняет все системные пакеты в указанной папке. Обычно большинство системных пакетов располагаются в подпапках по пути, указанному в sys.prefix. Чтобы найти этот путь, вы можете импортировать модуль sys и отобразить его следующим образом:

import sys

print(sys.prefix)

Это может выглядеть примерно так:

C:\\Python

Когда вы используете pip для установки сторонних пакетов, Python сохраняет эти пакеты в другой папке, указанной функцией site.getsitepackges():

import site
print(site.getsitepackages())

Он возвращает что-то вроде этого:

['C:\\Python', 
'C:\\Python\\lib\\site-packages']

Ничего страшного, если в ваших проектах используются только стандартные библиотеки Python. Однако это будет проблемой, если в проектах используются сторонние пакеты.

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

Обходной путь заключается в том, что вы можете использовать команду pip для переключения между версиями путем установки/удаления пакетов. Однако это займет много времени и не очень хорошо масштабируется. Именно здесь в игру вступают виртуальные среды.

Что такое виртуальная среда Python?

Python использует виртуальное окружение для создания изолированной среды для каждого проекта. Другими словами, у каждого проекта будет свой каталог для хранения сторонних пакетов. Если у вас есть несколько проектов, использующих разные версии пакета, вы можете хранить их в отдельных виртуальных средах.

Python включает модуль виртуальной среды(venv) в качестве стандартной библиотеки начиная с версии 3.3. Следовательно, чтобы использовать модуль venv, у вас должен быть Python 3.3 или новее.

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

python --version

Использование модуля venv для создания виртуальной среды

В следующем примере показано, как создать новый проект в Windows, который использует виртуальную среду, созданную встроенным модулем venv.

  • Сначала создайте новую папку для размещения проекта и виртуальной среды:
mkdir D:\test_env
cd test_env

Затем создайте виртуальную среду с именем project_env внутри папки test_env:

python -m venv project_env

Приведенная выше команда создаст новую папку с именем project_env со всеми необходимыми инструментами и библиотеками для запуска программ Python.

Используйте следующую команду, чтобы проверить, где находится python.exe:

where python

Он вернет следующий путь, указывающий, что python.exe находится в папке установки:

C:\Python\python.exe
  • Во-вторых, активируйте виртуальную среду, запустив файл active.bat в каталоге project_env/Scripts:
project_env\Scripts\activate

После выполнения вы увидите в терминале следующее:

(project_env) D:\test_env\project_env\Scripts>

Префикс(project_env) указывает, что вы находитесь в виртуальной среде project_env.

Теперь вы можете еще раз проверить, где находится python.exe:

where python

На этот раз он возвращает следующие пути:

D:\test_env\project_env\Scripts\python.exe
C:\Python\python.exe

Первая строка показывает, что файл python.exe находится в папке project_env/Scripts. Это означает, что если вы запустите команду python в project_env, вместо C:\Python\python.exe будет выполнен D:\test_env\project_env\Scripts\python.exe.

  • В-третьих, перейдите в папку D:\test_env, создайте новую папку проекта с именем web_crawler и перейдите в папку web_crawler:
cd..
cd..
mkdir web_crawler
cd web_crawler
  • В-четвертых, покажите пакеты, установленные в виртуальной среде project_env для проекта web_crawler:
pip list

Выход:

Package    Version
---------- -------
pip        22.0.4
setuptools 58.1.0

Когда вы создали виртуальную среду project_env, модуль venv уже установил два пакета: pip и setuptools.

  • В-пятых, установите пакет запросов в виртуальную среду:
pip install requests

Если вы отобразите все пакеты, установленные в виртуальной среде project_env, вы увидите пакет Requests и его зависимости:

Package            Version
------------------ ---------
certifi            2022.9.24
charset-normalizer 2.1.1
idna               3.4
pip                22.0.4
requests           2.28.1
setuptools         58.1.0
urllib3            1.26.12
  • В-шестых, создайте файл require.txt:
pip freeze > requirements.txt

Содержимое файла require.txt будет выглядеть следующим образом:

certifi==2022.9.24
charset-normalizer==2.1.1
idna==3.4
requests==2.28.1
urllib3==1.26.12

Файл require.txt содержит все пакеты с версиями, установленными в виртуальной среде project_env, используемой для проекта.

Когда вы копируете проект на другой компьютер, вы можете запустить команду pip install, чтобы установить все пакеты, перечисленные в файле require.txt.

  • В-седьмых, создайте файл main.py, который использует модуль Requests:
import requests

response = requests.get('https://www.google.com')
if response.status_code == 200:
    print(response.text)

Чтобы запустить файл main.py, вы можете использовать команду Python как обычно:

python main.py

Эта команда запускает python.exe из project_env и загружает пакеты, установленные в виртуальной среде project_env.

Чтобы деактивировать виртуальную среду, вы можете запустить команду деактивации:

deactivate

Она вернет следующее:

D:\test_env\web_crawler>

Теперь вы больше не видите префикс(project_env). Это означает, что вы не находитесь в виртуальной среде project_env.

Похожие посты
Добавить комментарий

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