Что такое виртуальное окружение
Перейти к содержимому

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

  • автор:

Что это такое

Виртуальное окружение — это изолированное окружение среды (в нашем случае это окружение Python), которое позволяет нам использовать определенные версии приложений.

Зачем оно мне?

Предположим, сейчас ты работаешь над несколькими проектами одновременно, и для каждого из них по тем или иным причинам есть свои определенные особенгсти версий пакетов. Например, на одном проекте у тебя Джанга 1.10, на втором — 1.8 , а на третьем — 1.5, да и в придачу Питон 2-й версии. При этом версии приложений менять ну никак нельзя — придется много чего переделывать да и вообще. Вот для таких ситуаций нам как раз и пригодитя виртуальное окружение, позволяющее использовать разные версии приложений.

Что использовать

Все пакеты, работающие с виртуальным окружением решают одну проблему — они позволяют проектам, которые имеют различные (и часто конфликтующие) зависимости, сосуществовать на одной системе.

Virtualenv

virtualenv — стандартный пакет для работы с виртуальным окружением. Используется вместе с virtualenvwrapper для более удобной работы. Установить и ознакомиться подробнее можно в энциклопедии Девмана

Аналоги

Хоть venv и является самым популярным выбором, существуют другие не менее интересные варианты.

Pyenv

Инструмент, позволяющий изолированно использовать различные версии Python. Например, если тебе нужно запустить твой код на разных версиях Питона (2.6, 2.7, 3.3. ), то это то, что тебе нужно. Для создания полноценного изолированного окружения следует использовать пакет pyenv-virualenv, позволющий пользоваться pyenv и virtualenv одновременно. Список команд с их описанием здесь(на английском).

Установка

Устанавливаем переменные окружения (если у вас Linux, /.bash_profile меняем на «`/.bashrc )

Инициализируем загрузку pyenv в терминале

Команды

Делаем rehash после установки

Задаем версию Питона для определенной директории. Версия хранится в файле .python-version

Задаем версию глобально. Будет заменена в случае, если задан файл .python-version

Conda

Conda — пакетный менеджер, который также позволяет нам создавать виртуальные окружения.

Установка

Установим пакет Miniconda — это всего лишь conda и ее зависимости. Скачиваем файл по ссылке. Запускаем файл в терминале

, ждем завершения установки, перезапускаем терминал. ЧТобы убедиться в том, что установка произошла успешно, выполни conda list . Если все хорошо, ты увидишь пакеты, которые были установлены.

Работа с виртуальным окружением

Создаем виртуальное окружение

Установку пакетов можно произвоздить как с помощью conda, так и pip. Pip устанавливается вместе с зависимостями.

12. Virtual Environments and Packages¶

Python applications will often use packages and modules that don’t come as part of the standard library. Applications will sometimes need a specific version of a library, because the application may require that a particular bug has been fixed or the application may be written using an obsolete version of the library’s interface.

This means it may not be possible for one Python installation to meet the requirements of every application. If application A needs version 1.0 of a particular module but application B needs version 2.0, then the requirements are in conflict and installing either version 1.0 or 2.0 will leave one application unable to run.

The solution for this problem is to create a virtual environment , a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages.

Different applications can then use different virtual environments. To resolve the earlier example of conflicting requirements, application A can have its own virtual environment with version 1.0 installed while application B has another virtual environment with version 2.0. If application B requires a library be upgraded to version 3.0, this will not affect application A’s environment.

12.2. Creating Virtual Environments¶

The module used to create and manage virtual environments is called venv . venv will usually install the most recent version of Python that you have available. If you have multiple versions of Python on your system, you can select a specific Python version by running python3 or whichever version you want.

To create a virtual environment, decide upon a directory where you want to place it, and run the venv module as a script with the directory path:

This will create the tutorial-env directory if it doesn’t exist, and also create directories inside it containing a copy of the Python interpreter and various supporting files.

A common directory location for a virtual environment is .venv . This name keeps the directory typically hidden in your shell and thus out of the way while giving it a name that explains why the directory exists. It also prevents clashing with .env environment variable definition files that some tooling supports.

Once you’ve created a virtual environment, you may activate it.

On Unix or MacOS, run:

(This script is written for the bash shell. If you use the csh or fish shells, there are alternate activate.csh and activate.fish scripts you should use instead.)

Activating the virtual environment will change your shell’s prompt to show what virtual environment you’re using, and modify the environment so that running python will get you that particular version and installation of Python. For example:

To deactivate a virtual environment, type:

into the terminal.

12.3. Managing Packages with pip¶

You can install, upgrade, and remove packages using a program called pip. By default pip will install packages from the Python Package Index. You can browse the Python Package Index by going to it in your web browser.

pip has a number of subcommands: “install”, “uninstall”, “freeze”, etc. (Consult the Installing Python Modules guide for complete documentation for pip .)

You can install the latest version of a package by specifying a package’s name:

You can also install a specific version of a package by giving the package name followed by == and the version number:

If you re-run this command, pip will notice that the requested version is already installed and do nothing. You can supply a different version number to get that version, or you can run python -m pip install —upgrade to upgrade the package to the latest version:

python -m pip uninstall followed by one or more package names will remove the packages from the virtual environment.

python -m pip show will display information about a particular package:

python -m pip list will display all of the packages installed in the virtual environment:

python -m pip freeze will produce a similar list of the installed packages, but the output uses the format that python -m pip install expects. A common convention is to put this list in a requirements.txt file:

The requirements.txt can then be committed to version control and shipped as part of an application. Users can then install all the necessary packages with install -r :

pip has many more options. Consult the Installing Python Modules guide for complete documentation for pip . When you’ve written a package and want to make it available on the Python Package Index, consult the Distributing Python Modules guide.

Виртуальные Окружения в Python

В процессе работы над проектом мне потребовалось проверить, работает ли пакет Flask с установленным у меня Python. При запуске команды для установки Flask я получил предупреждение, что пакет уже установлен, поскольку у меня установлен Anaconda.

Однако при попытке запустить Hello World в приложении Flask на Sublime Text 3, консоль выдала ошибку модуля Flask. Я решил почитать об этом в интернете. Выяснилось, что в Anaconda установлен модуль Flask, а в Python, который использовался в Sublime Text, этот модуль отсутствует. Я решил разобраться в том, как правильно настроить Python, установить необходимые пакеты и настроить Sublime Text build system. В результате поисков я обнаружил Virtual Environments , с которыми не сталкивался ранее.

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

Python

На данный момент в сообществе поддерживаются две версии: 2.x и 3.x. Некоторые пакеты работают с Python 3.x, однако у других нет поддержки 3.x и они работают только с 2.x. Таким образом, в некоторых случаях используется Python 2.x, а в других — Python 3.x. Начнем с установки обеих версий Python. Для этого можно использовать установщик пакетов, например Homebrew.

Python 3.X

Python 2.X

Здесь также устанавливается pip , с помощью которого можно установить пакеты Python.

Virtual Environment

В начале работы над проектом выберите версию Python и укажите необходимое количество библиотек/пакетов. Имеет смысл установить эти пакеты вне рамок всей системы. Если вы работаете с несколькими версиями Python на одном компьютере или несколькими пакетами, которые работают только с определенными версиями Python, то можно установить несколько виртуальных окружений ( Virtual Environments ).

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

Определение место установки Python

В зависимости от используемого метода, Python может быть установлен в разные расположения.

Установка Python с официального сайта

Здесь находится установленная версия. У меня версия 3.6, поэтому путь для Python выглядит следующим образом:

Установка Python с помощью Homebrew

Затем нужно выбрать версию в каталоге python или python@2 . Для python и версии 3.7.2_1 место расположения будет:

Установка virtualenv

Работаем с Python 3, установленным с помощью Homebrew. Устанавливаем virtualenv с использованием pip3 .

Создание Виртуального Окружения

Установка пакетов завершена, теперь можно перейти к Виртуальному Окружению. Для начала определим место расположения и название окружения. Я разместил его в домашнем каталоге под названием virtEnv1 .

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

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

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

Название виртуального окружения отображается в скобках, указывая на то, что мы работаем внутри окружения.

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

Также создаем файл app.py в домашнем каталоге, который обладает самым базовым кодом Hello World в Flask.

При запуске кода внутри окружения получаем следующий результат.

Со стороны клиента

Со стороны сервера

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

Чтобы выйти из окружения просто введите deactivate в терминале.

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

Аналогичным образом, можно создать окружения и повторить те же действия в Python 2.

Использование Python в Sublime Text 3

Я предпочитаю работать с Sublime Text, когда не использую Jupyter notebooks. Чтобы установить Sublime Text для Python, нужно создать новую систему сборки (build system). Перейдите к:

И введите следующий код:

Замените <username> своим именем пользователя.

Сохраним все в качестве virtEnv1Python . Откройте файл app.py в Sublime Text. Установите систему сборки как virtEnv1Python . Для проверки работы приложения нажмите Command + B . Приложение начнет работу, в чем можно убедиться, перейдя по ссылке http://127.0.0.1:5000/ .

Заключение

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

Добавить комментарий

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