Python

Виртуальные среды в Python 3

Виртуальные среды в Python 3
Как и большинство людей, я ненавижу устанавливать ненужные пакеты на свою рабочую станцию. После того, как вы закончите с ними, их никогда не будет достаточно удалить. Пакеты оставляют после себя тонны папок и файлов. Им требуется много других (малоизвестных) пакетов, которые также остались позади в результате событий. Медленно, но верно эти вещи накапливаются на вашей рабочей станции, и хотя они могут не занимать значительную часть вашего дискового пространства, они могут вызвать другие проблемы.

Старые зависимости

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

Проблема начинается, когда вы отправляете свой код в производство. Когда вы это сделаете, скорее всего, вы просто отправите свой основной скрипт, а не все зависимости пакета. Например, если вы написали микросервис, который будет поставляться как функция AWS Lambda, первые несколько строк могут импортировать модуль запроса следующим образом:

запрос на импорт

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

Конфликты

Также могут возникнуть конфликты, когда разные проекты используют разные версии одного и того же пакета. Возможно, некоторым из ваших старых проектов нужны более старые пакеты pip. Но вам может понадобиться более новый пакет для других проектов. Запуск pip install -U обновит пакет в вашей ОС, вызывая проблемы, когда вы вернетесь к поддержке старых проектов.

Виртуальные среды Python

Если вы используете любую версию Python выше 3.5, вы можете использовать встроенный модуль venv для создания так называемых виртуальных сред Python. Этот модуль создает изолированную папку или каталог, в котором могут жить все ваши пакеты pip и другие зависимости. В папке также есть скрипт активации. Всякий раз, когда вы хотите использовать определенную виртуальную среду, вы просто запускаете этот скрипт, после чего можно будет получить доступ только к пакетам, содержащимся в этой папке. Если вы запустите pip install, пакеты будут установлены внутри этой папки и больше нигде. После того, как вы закончите использовать среду, вы можете просто `` деактивировать '' ее, и тогда вам будут доступны только глобальные пакеты pip.

Если вы используете Ubuntu 18.04 и выше, вам даже не нужно устанавливать диспетчер пакетов pip во всей системе. Pip может существовать только в вашей виртуальной среде, если вы так предпочитаете.

Установка venv и создание виртуальных сред

Ubuntu 18.04 LTS выходит из коробки с Python 3.6.x, но модуль Python venv не установлен, как и pip. Установим просто venv.

$ apt установить python3-venv

Затем мы переходим в каталог, внутри которого вы хотите создать каталог виртуальной среды. Для меня это ~ / project1

$ cd ~ / project1

Создайте свой venv с помощью следующей команды, обратите внимание, что my-env - это просто имя этой среды, вы можете называть ее как хотите:

$ python3 -m venv my-env

Примечание. В некоторых установках Python3, таких как те, что доступны в Windows, вы вызываете интерпретатор Python, используя только python, а не python3, но это меняется от системы к системе. Для единообразия я буду использовать только python3.

После завершения выполнения команды вы увидите новую папку ~ / project1 / my-evn. Чтобы активировать виртуальную среду my-env, вам необходимо:

  1. Запустить,
    $ источник ~ / проект1 / мой-env / bin / активировать если вы используете Bash.
    Есть альтернативные скрипты, которые называются активировать.ловить рыбу и активировать.csh для людей, которые используют оболочки fish и csh соответственно.
  2. В Windows скрипт можно запустить, запустив:
    >.\ my-env \ Scripts \ активировать.летучая мышь если вы используете командную строку, или,
    >.\ my-env \ Scripts \ активировать.ps1 если вы используете PowerShell.

Использование виртуальных сред

После того, как вы успешно запустите сценарий, вы заметите, что приглашение изменится на что-то вроде того, что показано ниже, теперь вы можете устанавливать пакеты с помощью pip:

(my-env) Запросы на установку $ pip3
## Мы можем вывести список установленных пакетов с помощью команды 'pip freeze'
(my-env) $ pip3 заморозить
certifi == 2018.10.15
chardet == 3.0.4
идна == 2.7
pkg-resources == 0.0.0
запросы == 2.20.1
urllib3 == 1.24.1

Пока виртуальная среда активна (как указано в приглашении), все пакеты будут сохраняться только в каталоге виртуальной среды (my-env), независимо от того, где вы находитесь в файловой системе.

Чтобы выйти из виртуальной среды, вы можете ввести в командной строке deactivate, и вы вернетесь к использованию общесистемной установки Python. Вы можете заметить, что новые пакеты, которые мы только что установили, не будут отображаться в глобальной установке pip.

Чтобы избавиться от виртуальной среды, просто удалите папку my-env, созданную после запуска модуля. Вы можете создать столько сред, сколько захотите.

Заключение

С модулем venv виртуальные среды теперь доступны как стандартная функция Python, особенно если вы устанавливаете из Python.org. Раньше у нас было много сторонних реализаций под названием virtualenv, pyenv и т. Д.

Это привело к появлению все большего количества раздуваемого программного обеспечения, такого как Anaconda, особенно популярного среди специалистов по данным. Хорошо, наконец, иметь упрощенный инструмент для управления пакетами Python без необходимости устанавливать много другого несвязанного мусора. Вы можете узнать больше о Venv здесь.

Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...
Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...