Встроенный модуль venv в Python
Здравствуйте! Работая над проектами c использованием Python, можно столкнуться с проблемой совместимости различных версий одного и того-же пакета. Так устанавливая различные версии одной библиотеки, проекты со старой версией прекратят запускаться. Все дело в особом способе установки с использованием системных переменных. Обычно в Windows по умолчанию все модули устанавливаются в каталоге lib/site-packages. Данная проблема решается созданием виртуальной среды. В сегодняшней статье мы рассмотрим различия в способах создания изолированных каталогов, в некоторых ранних версиях языка, а также воспользуемся модулем venv, используемый в Python 3.5 и выше. В ранних версиях Python для этих целей используется сторонняя библиотека virtualenv.
# установка библиотеки virtualenv
pip install virtualenv
# создание среды
virtualenv my_env
Среда готова и можно устанавливать в нее все необходимое. Данный вариант работает корректно с в версией языка меньшей Python 3.x. Что касается Python 3.5 и выше, то здесь предусмотрен встроенный модуль venv. Создавать среду возможно двумя способами. Давайте рассмотрим их:
# 1-ый способ
# для Windows
c:\Python35\python -m venv название папки
# Если пути интерпретатора Python уже настроены то:
python -m venv myenv
Второй способ предполагает вызов непосредственно интерпретатора и импорт модуля venv:
# вызов интерпретатора
>>>python
>>>import venv
>>>venv.create("C:/My_Venv")
Успешное выполнение данных команд создает папку с указанным именем и тремя каталогами Include, Scripts и Lib/site-packages. Там же создается файл pyvenv.cfg:
# файл pyvenv.cfg
# home = C:\Users\УЗИ\AppData\Local\Programs\Python\Python38-32
# include-system-site-packages = false
# version = 3.8.5
Первая строка указывает каталог из которого запускался Python. Вторая строка со значением false исключает импорт уже установленных пакетов. И чтобы сделать все ранее установленные пакеты доступными для импорта из venv:
python -m venv --system-site-packages myenv
Заключение.
Виртуальная среда помогает избежать конфликта, при работе с разными версиями одного и того же пакета, что сильно облегчает разработку. В то же время, почти у каждой версии языка есть рекомендованный вариант настройки виртуального окружения. Если же использовать старую версию, то все настройки будут некорректны и при установке новых пакетов мы можем увидеть их в глобальной папке lib/site-packages.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.