- Как создать виртуальное окружение в Python: инструкция
- Как создать виртуальное окружение в Python 3
- Шаг 1. Запускаем venv
- Шаг 2. Активируем виртуальную среду
- Другие инструменты
- Создание виртуального окружения при помощи virtualenv
- Шаг 1. Устанавливаем virtualenv
- Шаг 2. Создаем виртуальную среду
- Шаг 3. Активируем виртуальную среду
- Шаг 4. Выходим из виртуальной среды
- Что нового?
- Главное о Poetry
- Главное о Pipenv
- Python/Virtual environment
- Overview
- Installation
- Packages
- Usage
- Creation
- venv
- virtualenv
- Activation
- Python versions
- virtualenvwrapper
- Installation
- Basic usage
- Pipenv
- Installation
- Basic usage
- See also
Как создать виртуальное окружение в Python: инструкция
В статье вы узнаете, как создать виртуальную среду Python . Это может понадобиться Python-разработчикам для того, чтобы избежать проблем с библиотеками разных версий.
- Простой пример: у вас есть два приложения, которые подключаются к одной и той же библиотеке. Вот только каждому приложению нужны разные ее версии.
- Еще пример: вы хотите обеспечить работу приложения независимо от обновлений библиотек, которые устанавливаются в глобальном хранилище Python.
- И третий пример: у вас нет доступа к этому хранилищу.
Выход во всех трех случаях — создать venv Python . Название модуля venv — это сокращение от Virtual Environment, то есть виртуальная среда. Venv представляет собой отличный инструмент для изоляции проектов, своеобразную песочницу. В ней мы можем запускать приложение со своими зависимостями, чтобы не мешать другим приложениям, которые используют то же ПО, но иных версий. В результате каждое приложение будет запускаться в собственной виртуальной среде, изолированно от остальных, что повысит стабильность работы всех приложений.
Как создать виртуальное окружение в Python 3
Приятная новость: отдельно устанавливать venv на Windows нам не потребуется, пакет является частью стандартной библиотеки Python 3 и поставляется вместе с интерпретатором.
Что касается Linux, то здесь venv далеко не всегда входит в пакет операционной системы, поэтому может потребоваться его установить. На Ubuntu/Debian это делается следующей командой:
sudo apt install -y python3-venv
Некоторые пакеты Python требуют сборки из исходных кодов, поэтому также может потребоваться установка следующих пакетов:
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
Теперь рассмотрим, как создать виртуальное окружение Python 3 в Windows и Linux с помощью venv .
Шаг 1. Запускаем venv
Сначала идет общая команда для всех ОС:
Разберем ее чуть подробнее. Здесь -m выступает в качестве инструкции для запуска модуля venv . А вторая запись venv указывает на каталог venv/lib/python3.8/site-packages/ (номер версии 3.8 добавлен просто для примера, она может быть и другой), в котором Python будет хранить все библиотеки и другие компоненты, необходимые для изолированной работы приложений.
Шаг 2. Активируем виртуальную среду
Активация виртуального окружения выполняется по-разному для Windows и Linux. В ОС от Microsoft понадобится запустить этот скрипт:
А в Linux (и также в MacOS) нужно ввести вот такую инструкцию:
Если всё сделано правильно, будет выведена следующая запись:
(venv) root@purplegate:/var/test#
Теперь можно приступать к работе над проектом в изолированном окружении.
Другие инструменты
Конечно, venv является самым современным инструментом для создания виртуальной среды. Но он появился только в Python 3. А что делать тем, кто по каким-то причинам работает с более старыми версиями языка? Ответ: пробовать иные инструменты, которые имеют и ряд других полезных функций, иначе бы мы о них даже не упоминали. Кратко опишем эти решения, а затем рассмотрим подробнее наиболее популярное.
- virtualenv . Простой и понятный инструмент, который пригодится при развертывании многих приложений. Поэтому он будет полезен для освоения, и ниже мы представим инструкцию по работе с ним.
- pyenv . Позволяет изолировать версии «Питона». Полезен, если по какой-то причине вам требуется запускать разные версии Python — например, для тестирования программы.
- virtualenvwrapper . Обертка для virtualenv , которая используется для хранения виртуальных сред и различных операций с ними (создание, копирование, удаление). Virtualenvwrapper хорош тем, что с его помощью можно легко переключаться между средами и использовать различные плагины для расширения функций.
Создание виртуального окружения при помощи virtualenv
Рассмотрим этот процесс на примере ОС Linux. Впрочем, запуск virtualenv в Windows выполняется почти так же, разница будет лишь в путях, которые здесь будут иными, и скриптах. И это мы будем оговаривать отдельно.
Шаг 1. Устанавливаем virtualenv
Можно скачать исходники приложения и поставить его вручную, но удобнее всего сделать это с помощью менеджера pip . В этом случае всё, что вам понадобится, это ввести в консоли следующую инструкцию:
Шаг 2. Создаем виртуальную среду
Этот шаг делается тоже при помощи всего одной небольшой инструкции:
Эта простая команда создаст новый каталог в текущем. Разумеется, вместо myenv вы можете ввести любое другое имя для своего окружения. Теперь разберем структуру созданной директории:
- в /myenv/bin будут размещены скрипты для работы с окружением, копия интерпретатора нужной версии, а также собственно pip и ряд приложений для пакетной обработки. Если вы работаете в Windows, то эта папка будет иметь другой адрес: /myenv/Scripts .
- директории / myenv/lib , а также /myenv/include предназначены для хранения основных библиотек окружения. А все новые файлы будут загружаться в /myenv/lib/pythonX.X/site-packages/ , где вместо X.X будет указана ваша версия «Питона».
Шаг 3. Активируем виртуальную среду
В Linux и Windows это делается немного по-разному. Для Linux инструкция такая (будем использовать всё тот же пример с именем myenv , которое вы замените на нужное вам):
А вот так это будет выглядеть в Windows:
При корректной активации вы увидите имя вашего виртуального окружения в нижней строке (выделили красным):
Если теперь создать виртуальную среду с ключом — system-site-packages , то вы получите доступ к общему хранилищу в рамках своей среды. Делается это так:
virtualenv --system-site-packages myenv
Обратите внимание, что путь к хранилищу в Linux и в Windows тоже будет разным: соответственно, для Линукса это будет /usr/lib/python3.8/site-packages , а для Виндовc — \Python38\Lib\site-packages . Цифры версии, опять же, для примера, у вас она может быть другой.
Шаг 4. Выходим из виртуальной среды
После завершения работы с программой из нее нужно корректно выйти. В Linux это делается командой deactivate , а в Windows с помощью «батника», пакетного файла deactivate.bat .
Что нового?
Помимо уже рассмотренного модуля venv и virtualenv , существуют и более современные инструменты, обеспечивающие более гибкое управление проектами на Python, в том числе и в виртуальном окружении:
- Poetry . Это менеджер, позволяющий управлять зависимостями приложения в виртуальной среде. Также он облегчает тесты и развертывание приложений, автоматизируя многие вещи.
- Pipenv . И еще один менеджер, который уже содержит в себе pip и virtualenv , а также ряд других полезных инструментов. Этот менеджер создан для облегчения управления окружениями и пакетами, ведь многие разработчики на определенной стадии развития проекта сталкиваются с проблемами из-за контроля версий.
По большому счету, каждый из этих менеджеров заслуживает отдельного разговора, но их возможности выходят далеко за рамки нашей статьи. Поэтому расскажем самое главное об этих продуктах.
Главное о Poetry
Poetry способен взять на себя всю работу с библиотеками в рамках виртуальной среды, в том числе устанавливать, обновлять и публиковать их. Например, возможностей pip для этого уже не хватит. Кроме того, создание и упаковка приложения здесь реализована при помощи всего одной команды (замените myproject на собственное название):
А, например, инструкция poetry init позволит выполнить инициализацию проекта в уже созданной директории. Вводится эта инструкция из той же директории.
Также Poetry умеет выполнять публикацию проектов в частных репозиториях, отслеживать зависимости, а еще контролировать их версии. Наконец, он облегчает работу на собственных виртуальных серверах, обеспечивая надежную изоляцию ваших проектов. Найти этот замечательный инструмент можно здесь .
Главное о Pipenv
Если в двух словах, то Pipenv можно охарактеризовать, как pip + virtualenv , но с продвинутыми возможностями. И на самом деле возможности этого менеджера гораздо шире. Так, он избавляет от необходимости пользоваться не слишком удобным файлом зависимостей requirements.txt .
Вместо этого в Pipenv есть два других файла, один из которых, Pipfile.lock , позволяет связывать версии библиотек, что хорошо для безопасности разрабатываемых приложений. Ну, а собственно Pipfile является продвинутой заменой устаревшему файлу требований. А дело в том, что Pipfile , в отличие от requirements.txt , обновляется автоматически с изменением версий продукта, что здорово выручает при работе в команде, избавляя разработчиков от ошибок зависимостей. Pipenv можно найти здесь .
Что ж, теперь вы вооружены полным набором инструментов, и обилие зависимостей с разными версиями больше не должно вас пугать.
Python/Virtual environment
virtualenv is a tool used to create an isolated workspace for a Python application. It has various advantages such as the ability to install modules locally, export a working environment, and execute a Python program in that environment.
Overview
A virtual environment is a directory into which some binaries and shell scripts are installed. The binaries include python for executing scripts and pip for installing other modules within the environment. There are also shell scripts (one for bash, csh, and fish) to activate the environment. Essentially, a virtual environment mimics a full system install of Python and all of the desired modules without interfering with any system on which the application might run.
In 2017, Pipenv was published which manages all the above tools — managing virtual environments of python interpreters, package dependencies, their activation and reproducible locking of versions in Pipfiles.
Installation
Python 3.3+ comes with a module called venv. For applications that require an older version of Python, virtualenv must be used.
Packages
Install one of these packages to use a Python virtual environment:
Usage
All three tools use a similar workflow.
Creation
Use venv or virtualenv to create the virtual environment within your project directory. Be sure to exclude the venv directory from version control—a copy of pip freeze will be enough to rebuild it.
venv
This tool is provided by python (3.3+):
$ python -m venv envname
virtualenv
Use virtualenv for Python 3, available in python-virtualenv .
Activation
Use one of the provided shell scripts to activate and deactivate the environment. This example assumes bash is used.
$ source envname/bin/activate (envname) $
Once inside the virtual environment, modules can be installed with pip and scripts can be run as normal.
To exit the virtual environment, run the function provided by bin/activate :
Python versions
By default, virtual environments are created using system Python. The bin/python binary is just a symlink to system python:
$ ls -l envname/bin/python lrwxrwxrwx 1 foo foo 15 Jan 29 18:48 envname/bin/python -> /usr/bin/python
If you want to use a different Python version inside the virtual environment, you can use the -p / —python option of virtualenv:
$ virtualenv -p 3.8 envname $ ls -l envname/bin/python lrwxrwxrwx 1 foo foo 18 Jan 29 18:48 envname/bin/python -> /usr/bin/python3.8
$ virtualenv -p pypy3 envname
virtualenvwrapper
virtualenvwrapper allows more natural command line interaction with your virtual environments by exposing several useful commands to create, activate and remove virtual environments. This package is a wrapper for python-virtualenv .
Installation
Install the python-virtualenvwrapper package and add the following lines to your ~/.bashrc :
export WORKON_HOME=~/.virtualenvs source /usr/bin/virtualenvwrapper.sh
The line source /usr/bin/virtualenvwrapper.sh can cause some slowdown when starting a new shell. To fix this try using source /usr/bin/virtualenvwrapper_lazy.sh , which will load virtualenvwrapper the first time virtualenvwrapper functions are called.
Re-open your console to apply changes. The WORKON_HOME directory will be created automatically.
Basic usage
Create the virtual environment (all command line options except -a , -i , -r , and -h are passed directly to virtualenv, so you can use -p to select Python version):
$ mkvirtualenv envname
Activate the virtual environment:
Install some package inside the virtual environment (say, Django):
(envname) $ pip install django
After you have done your things, leave the virtual environment:
Pipenv
pipenv allows better managed CLI interactions by providing a single program that does all the functions of the above tools.
Installation
Basic usage
All commands can be executed in the project folder, and pipenv will recognize the specific situation — whether a virtualenv exists in the directory, locating it, and running on the specific virtual interpreter when pipenv is executed.