Python создание виртуального окружения windows

  • Главная

  • Инструкции

  • Python

  • Как создать виртуальное окружение в Python: инструкция

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

  • Простой пример: у вас есть два приложения, которые подключаются к одной и той же библиотеке. Вот только каждому приложению нужны разные ее версии.
  • Еще пример: вы хотите обеспечить работу приложения независимо от обновлений библиотек, которые устанавливаются в глобальном хранилище Python.
  • И третий пример: у вас нет доступа к этому хранилищу.

Выход во всех трех случаях — создать venv Python. Название модуля venv — это сокращение от Virtual Environment, то есть виртуальная среда. Venv представляет собой отличный инструмент для изоляции проектов, своеобразную песочницу. В ней мы можем запускать приложение со своими зависимостями, чтобы не мешать другим приложениям, которые используют то же ПО, но иных версий. В результате каждое приложение будет запускаться в собственной виртуальной среде, изолированно от остальных, что повысит стабильность работы всех приложений.

Приятная новость: отдельно устанавливать 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

Сначала идет общая команда для всех ОС:

python -m venv venv

Разберем ее чуть подробнее. Здесь -m выступает в качестве инструкции для запуска модуля venv. А вторая запись venv указывает на каталог venv/lib/python3.8/site-packages/ (номер версии 3.8 добавлен просто для примера, она может быть и другой), в котором Python будет хранить все библиотеки и другие компоненты, необходимые для изолированной работы приложений.

Шаг 2. Активируем виртуальную среду

Активация виртуального окружения выполняется по-разному для Windows и Linux. В ОС от Microsoft понадобится запустить этот скрипт:

venv\Scripts\activate.bat

А в Linux (и также в MacOS) нужно ввести вот такую инструкцию:

source venv/bin/activate

Если всё сделано правильно, будет выведена следующая запись:

(venv) root@purplegate:/var/test#

Теперь можно приступать к работе над проектом в изолированном окружении.

Другие инструменты

Конечно, venv является самым современным инструментом для создания виртуальной среды. Но он появился только в Python 3. А что делать тем, кто по каким-то причинам работает с более старыми версиями языка? Ответ: пробовать иные инструменты, которые имеют и ряд других полезных функций, иначе бы мы о них даже не упоминали. Кратко опишем эти решения, а затем рассмотрим подробнее наиболее популярное.

  • virtualenv. Простой и понятный инструмент, который пригодится при развертывании многих приложений. Поэтому он будет полезен для освоения, и ниже мы представим инструкцию по работе с ним.
  • pyenv. Позволяет изолировать версии «Питона». Полезен, если по какой-то причине вам требуется запускать разные версии Python — например, для тестирования  программы.
  • virtualenvwrapper. Обертка для virtualenv, которая используется для хранения виртуальных сред и различных операций с ними (создание, копирование, удаление). Virtualenvwrapper хорош тем, что с его помощью можно легко переключаться между средами и использовать различные плагины для расширения функций.

Создание виртуального окружения при помощи virtualenv

Рассмотрим этот процесс на примере ОС Linux. Впрочем, запуск virtualenv в Windows выполняется почти так же, разница будет лишь в путях, которые здесь будут иными, и скриптах. И это мы будем оговаривать отдельно.

Шаг 1. Устанавливаем virtualenv

Можно скачать исходники приложения и поставить его вручную, но удобнее всего сделать это с помощью менеджера pip. В этом случае всё, что вам понадобится, это ввести в консоли следующую инструкцию:

pip install virtualenv

Шаг 2. Создаем виртуальную среду

Этот шаг делается тоже при помощи всего одной небольшой инструкции:

virtualenv myenv

Эта простая команда создаст новый каталог в текущем. Разумеется, вместо myenv вы можете ввести любое другое имя для своего окружения. Теперь разберем структуру созданной директории:

  • в /myenv/bin будут размещены скрипты для работы с окружением, копия интерпретатора нужной версии, а также собственно pip и ряд приложений для пакетной обработки. Если вы работаете в Windows, то эта папка будет иметь другой адрес: /myenv/Scripts.
  • директории /myenv/lib, а также /myenv/include предназначены для хранения основных библиотек окружения. А все новые файлы будут загружаться в /myenv/lib/pythonX.X/site-packages/, где вместо X.X будет указана ваша версия «Питона».

Шаг 3. Активируем виртуальную среду

В Linux и Windows это делается немного по-разному. Для Linux инструкция такая (будем использовать всё тот же пример с именем myenv, которое вы замените на нужное вам):

source myenv/bin/activate

А вот так это будет выглядеть в Windows:

myenv\Scripts\activate.bat

При корректной активации вы увидите имя вашего виртуального окружения в нижней строке (выделили красным):

Image1

Если теперь создать виртуальную среду с ключом --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 new myproject

А, например, инструкция poetry init позволит выполнить инициализацию проекта в уже созданной директории. Вводится эта инструкция из той же директории.

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

Главное о Pipenv

Если в двух словах, то Pipenv можно охарактеризовать, как pip + virtualenv, но с продвинутыми возможностями. И на самом деле возможности этого менеджера гораздо шире. Так, он избавляет от необходимости пользоваться не слишком удобным файлом зависимостей requirements.txt.

Вместо этого в Pipenv есть два других файла, один из которых, Pipfile.lock, позволяет связывать версии библиотек, что хорошо для безопасности разрабатываемых приложений. Ну, а собственно Pipfile является продвинутой заменой устаревшему файлу требований. А дело в том, что Pipfile, в отличие от requirements.txt, обновляется автоматически с изменением версий продукта, что здорово выручает при работе в команде, избавляя разработчиков от ошибок зависимостей. Pipenv можно найти здесь.

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

Содержание:развернуть

  • Настройка виртуального окружения
  • Создание

  • Активация

  • Автоматическая активация

  • Деактивация

  • Альтернативы venv

Все сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show <имя_пакета>.

root@purplegate:~# pip3 show pytest
Name: pytest
Version: 5.3.2
Summary: pytest: simple powerful testing with Python
Home-page: https://docs.pytest.org/en/latest/
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, ...
License: MIT license
Location: /usr/local/lib/python3.8/site-packages
Requires: more-itertools, pluggy, py, wcwidth, attrs, packaging
Required-by:

Location — путь до ваших глобальных пакетов.

В большинстве случаев, устанавливать пакеты глобально — плохая идея 🙅‍♂️ Почему? Рассмотрим простой пример:

Допустим у нас есть два проекта: «Project A» и «Project B». Оба проекта зависят от библиотеки Simplejson. Проблема возникает, когда для «Project A» нужна версия Simplejson 3.0.0, а для проекта «Project B» — 3.17.0. Python не может различить версии в глобальном каталоге site-packages — в нем останется только та версия пакета, которая была установлена последней.

Решение данной проблемы — создание виртуального окружения (virtual environment).

Основная цель виртуального окружения Python — создание изолированной среды для python-проектов

Это означает, что каждый проект может иметь свои собственные зависимости, независимо от других проектов.

Настройка виртуального окружения

Один из самых популярных инструментов для создания виртуального окружения — virtualenv. Однако в данной статье мы будем рассматривать более свежий инструмент venv.

Устанавливать venv не нужно — он входит в стандартную библиотеку Python

Создание

Для создания виртуального окружения, перейдите в директорию своего проекта и выполните:

python -m venv venv

-m — флаг для запуска venv как исполняемого модуля.
venv — название виртуального окружения (где будут храниться ваши библиотеки).

В результате будет создан каталог venv/ содержащий копию интерпретатора Python, стандартную библиотеку и другие вспомогательные файлы. Все новые пакеты будут устанавливаться в venv/lib/python3.x/site-packages/.

Содержимое каталога venv.

Виртуальное окружение также можно создать в IDE PyCharm, для этого:

  1. Зайдите в настройки интерпретатора («Settings» → «Project:<name>» → «Project Interpreter«);
  2. Нажмите на шестеренку в верхнем правом углу, выберите «Add..«;
  3. Выберите «Virual Enviroment» и задайте параметры.

Создание виртуального окружения в IDE PyCharm.

Активация

Чтобы начать пользоваться виртуальным окружением, необходимо его активировать:

  • venv\Scripts\activate.bat — для Windows;
  • source venv/bin/activate — для Linux и MacOS.

source выполняет bash-скрипт без запуска дополнительного bash-процесса.

Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:

(venv) root@purplegate:/var/test#

Также новый путь до библиотек можно увидеть выполнив команду:

python -c "import site; print(site.getsitepackages())"

Если вы используете IDE PyCharm, то при открытии проекта он автоматически найдет созданное виртуальное окружение и уведомит о его использовании. Проверить настройки виртуального окружения можно в «Settings» → «Project:<name>» → «Project Interpreter» (путь до интерпретатора должен быть вида [путь до проекта]/venv/Scripts/python.exe).

Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip

Автоматическая активация

В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷‍♀️).

На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash:

#!/usr/bin/env bash

source $BASEDIR/venv/bin/activate
python $BASEDIR/my_app.py

Теперь можно установить права на исполнение и запустить нашу обертку:

chmod +x myapp/run.sh
./myapp/run.sh

Деактивация

Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:

deactivate

Альтернативы venv

На данный момент существует несколько альтернатив для venv:

  • pipenv — это pipfile, pip и virtualenv в одном флаконе;
  • pyenv — простой контроль версий Питона;
  • poetry — новый менеджер для управления зависимостями;
  • autoenv — среды на основе каталогов;
  • pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
  • rez — интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.

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

Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry.

Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.

Для чего нужно виртуальные среды?

При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:

  1. Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через «pip list» на старом компьютере, который выведет множество лишних модулей.
  2. Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.

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

Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.

Установка и создания окружения с virtualenv

Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:

pip install virtualenv

Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:

sudo pip3 install virtualenv

Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:

  • PermissionError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6’
  • Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv

Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:

virtualenv --help

Установка virtualenv в Python3

Я использую Python 3.6, и так я создам окружение в папке projectname/venv:

virtualenv -p python3.6 project/venv

Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:

virtualenv D:\project\venv

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

-projectname # Каталог проекта
--venv # Окружение
--app # Каталог с приложением

Активация и выход из окружения

Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.

В случаях с Linux указываем полный путь до venv/bin/activate:

source project/venv/bin/activate

Для активации в Windows, в папке venv\Scripts есть несколько файлов:

  • activate.ps1 — для активации через Powershell;
  • activate.bat — для активации через CMD.

Для активации просто укажите полный путь до файла. Например:

D:\projectname\venv\Scripts\activate.ps1

О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:

Активация virtualenv в Python3

Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:

pip list

Список установленных пакетов через pip в Python

Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.

Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:

deactivate

Для CMD нужно указать путь до файла «venv\Scripts\deactivate.bat».

Управление средами через virtualenvwrapper

Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.

Благодаря этому пакету мы сможем запускать ваши окружения так:

workon project_name
# вместо
source project_name/venv/bin/activate

Для Windows нужно установить следующий пакет:

pip install virtualenvwrapper-win

Для Linux нужно так же использовать sudo:

sudo pip3 install virtualenvwrapper

Настройки для Linux

Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:

export WORKON_HOME = /var/envs/

# Создание директории
source ~/.bashrc
mkdir -p $WORKON_HOME

Следующая команда добавит скрипты в домашний каталог для удобной работы:

source /usr/local/bin/virtualenvwrapper.sh
# Если путь отличается, то файл virtualenvwrapper.sh можно найти так
which virtualenvwrapper.sh

При выполнении предыдущей команды у меня появилась ошибка:

virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader

Она исправилась добавлением переменной в env с путем до нужного интерпретатора:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

Настройки для Windows

Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:\Users\%USERNAME%\Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:

Определение переменных окружений в Windows для virtualenvwrapper

Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.

Основные команды

Далее мы можем использовать следующие команды (основные):

  • mkvirtualenv — создание окружения;
  • lsvirtualenv — отображение списка окружений;
  • rmvirtualenv — удаление;
  • workon — переключение между виртуальными средами;
  • deactivate — выход из текущего окружения.

Так мы создадим виртуальную среду:

mkvirtualenv project_name

Создание окружения с mkvirtualenv в Python virtualenvwrapper

Так выйдем из созданной среды:

deactivate

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

workon django3.0

Изменение сред с workon в Python virtualenvwrapper

Если нужно использовать другую версию Python:

mkvirtualenv -p python2.7 project_name/venv

Получение справки:

mkvirtualenv -h

Создание виртуальных сред со встроенным пакетом Python venv

Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:

sudo apt install python3-venv

Проверить, то что пакет venv установлен, можно так:

python -m venv
# или
python3 -m venv

Установка venv в Python

Следующая команда создаст виртуальную среду:

python -m venv C:\project_name\project_venv
# или
python3 -m venv /var/project_name/project_venv

Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.

Активация окружения выполняется следующим образом:

# CMD
C:\project_name\project_venv\Scripts\activate.bat
# Powershell
C:\project_name\project_venv\Scripts\Activate.ps1
# Bash
project_name/project_venv/bin/activate

Для выхода из окружения:

# CMD
C:\project_name\project_venv\Scripts\deactivate.bat
# Powershell и bash
deactivate

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

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

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

Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:

Подключение virtualenv в Pycharm

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

Создание виртуального окружения virtualenv в Pycharm

Для настройки окружения для старых проектов нужно зайти в настройки:

Изменение виртуального окружения virtualenv в Pycharm

Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):

Изменение виртуального окружения virtualenv в Pycharm

Создание списка установленных пакетов Requirements.txt

Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.

Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:

pip freeze

Получение списка установленных пакетов с pip в Python

Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):

pip freeze > Requirements.txt

На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:

pip install -r Requirements.txt

Создание файла Requitements.txt в Python с pip 

Теги:

#python

#virtualenv

#venv

Продолжаем серию “Python.Уроки”. На этот раз мы изучим, что такое виртуальные окружения в Python, зачем они нужны и как их использовать. Познакомимся с инструментами virtualenv и venv для создания виртуальных окружений.

  • Что такое виртуальное окружение и зачем оно нужно?
  • ПО позволяющее создавать виртуальное окружение в Python
  • virtualenv
    • Установка virtualenv
    • Создание виртуального окружения
    • Активация виртуального окружения
    • Деактивация виртуального окружения
  • venv
    • Создание виртуального окружения
    • Активация виртуального окружения
    • Деактивация виртуального окружения
  • Полезные ссылки

Что такое виртуальное окружение и зачем оно нужно?

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

Во-первых: различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться.

Во-вторых: может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, т.е. вы установили приложение и хотите, чтобы оно работало независимо от того обновляются у вас библиотеки или нет. Как вы понимаете, если оно будет использовать библиотеки из глобального хранилища (/usr/lib/pythonXX/site-packages), то, со временем, могут возникнуть проблемы.

В-третьих: у вас просто может не быть доступа к каталогу /usr/lib/pythonXX/site-packages.

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

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

Начнем с инструментов, которые входят в PyPI. Если кто не знает PyPI – это Python Package Index (PyPI) – репозиторий пакетов Python, доступный для любого разработчика и пользователя Python ().

virtualenv

Это, наверное, одни из самых популярных инструментов, позволяющих создавать виртуальные окружения. Он прост в установке и использовании. В сети довольно много руководств по virtualenv, самые интересные, на наш взгляд, будут собраны в конце урока в разделе “Полезные ссылки”. В общем, этот инструмент нужно обязательно освоить, как минимум, потому что описание развертывания и использования многих систем, созданных с использованием Python, включает в себя процесс создания виртуального окружения с помощью virtualenv.

pyenv

Инструмент для изоляции версий Python. Чаще всего применяется, когда на одной машине вам нужно иметь несколько версий интерпретатора для тестирования на них разрабатываемого вами ПО.

virtualenvwrapper

Virtualenvwrapper – это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет plug-in’ов.

Существуют ещё инструменты и plug-in’ы, выполняющие работу по изоляции частей системы Python, но мы их не будем рассматривать.

Инструменты, входящие в стандартную библиотеку Python.

venv

Этот модуль появился в Python3 и не может быть использован для решения задачи изоляции в Python2. По своему функционалу очень похож на virtualenv. Если вы работаете с третьим Python, то можете смело использовать данный инструмент.

virtualenv

Будем рассматривать работу с virtualenv в рамках операционной системы Linux. Для Windows все будет очень похоже, за исключением моментов, связанных со спецификой этой ОС: названия и расположение каталогов, запуск скриптов оболочки и т.п.

Установка virtualenv

Virtualenv можно установить с использованием менеджера pip (ссылка на статью), либо скачать исходные коды проекта и установить приложение вручную.

Установка с использованием pip.

Для установки virtualenv откройте консоль и введите следующую команду:

> pip install virtualenv

Установка из исходного кода проекта.

В этом случае, вам нужно будет выполнить чуть большее количество действий.

Введите в консоли следующий набор команд:

> curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
> tar xvfz virtualenv-X.X.tar.gz
> cd virtualenv-X.X
>  [sudo] python setup.py install

X.X – это версия приложения, ее вам нужно знать заранее.

Если использовать ключевое слово sudo, инструмент будет установлен глобально, в противном случае – локально.

Мы рекомендуем вам использовать pip для установки virtualenv.

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

Виртуальное окружение создается следующей командой:

> virtualenv PRG1

PRG1 в данном случае – это имя окружения.

После выполнения данной команды, в текущем каталоге будет создан новый каталог с именем PRG1. Разберем более подробно его содержимое.

RPG1/bin/ – содержит скрипты для активации/деактивации окружения, интерпретатор Python, используемый в рамках данного окружения, менеджер pip и ещё несколько инструментов, обеспечивающих работу с пакетами PythonВ Windows, это каталог PRG1\Scripts

PRG1/include/ и PRG1/lib/ – каталоги, содержащие библиотечные файлы окружения. Новые пакеты будут установлены в каталог PRG1/lib/pythonX.X/site-packages/.

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

Для активации виртуального окружения воспользуйтесь командой (для Linux):

> source PRG1/bin/activate

для Windows команда будет выглядеть так:

> PRG1\Scripts\activate.bat

Команда source выполняет bash-скрипт без запуска второго bash-процесса.

Если команда выполнилась успешно, то вы увидите, что перед приглашением в командной строке появилась дополнительная надпись, совпадающая с именем виртуального окружения.

virtual environment

При этом в переменную окружения PATH, в самое начало, будет добавлен путь до директории bin, созданного каталога RPG1.

Если вы создадите виртуальное окружение с ключем –system-site-packages:

> virtualenv --system-site-packages PRG1

то в рамках окружения PRG1 вы будите иметь доступ к глобальному хранилищу пакетов:

    • в Linux: /usr/lib/pythonX.X/site-packages
  • в Windows: \PythonXX\Lib\site-packages

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

Для деактивации виртуального окружения (выхода из него), введите команду deactivate для Linux или deactivate.bat, если вы работаете в Windows.

> deactivate

virtual environment deactivate

venv

Устанавливать venv не нужно, т.к. он входит в стандартную библиотеку Python. Т.е. если вы установили себе Python, то venv у вас уже есть. Помните, что venv работает только в Python3!

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

Для создания виртуального окружения с именем PRG2 с помощью venv выполните следующую команду:

> python -m venv PRG2

В результате будет создан каталог PRG2 со структурой похожей на ту, что была описана для virtualenv. Функциональное назначение каталогов тоже самое.

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

Активация виртуального окружения в Linux выполняется командой:

>source PRG2/bin/activate

в Windows:

>PRG2\Scripts\activate.bat

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

Деактивация выполняется командой deactivate (работает как в Windows, так и в Linux)

>deactivate

Полезные ссылки

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

Официальная документация

Документация по virtualenv

Документация по virtualenvwrapper

Документация по venv

Статьи

Python. Строим виртуальное окружение с помощью virtualenv

Памятка по virtualenv и изолированным проектам на Python

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

<<< Python. Урок 16. Установка пакетов в Python    Python. Урок 18. Аннотация типов в Python>>>

Время на прочтение
8 мин

Количество просмотров 296K

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

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

Статья начинается с базовых вещей: с установки Python 3, инструментов разработки Pip и Virtualenv и среды разработки PyCharm в Windows и в Ubuntu. Для многих это не представляет трудностей и возможно, что уже всё установлено.

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

Установка Python и Pip

Pip является менеджером пакетов для Python. Именно с помощью него обычно устанавливаются модули/библиотеки для разработки в виде пакетов. В Windows Pip можно установить через стандартный установщик Python. В Ubuntu Pip ставится отдельно.

Установка Python и Pip в Windows

Для windows заходим на официальную страницу загрузки, где затем переходим на страницу загрузки определенной версии Python. У меня используется Python 3.6.8, из-за того, что LLVM 9 требует установленного Python 3.6.

Далее в таблице с файлами выбираем «Windows x86-64 executable installer» для 64-битной системы или «Windows x86 executable installer» для 32-битной. И запускаем скачанный установщик, например, для версии Python 3.8.1 он называется python-3.8.1-amd64.exe.

Во время установки ставим галочку возле Add Python 3.x to PATH и нажимаем Install Now:

Установка Python 3 в Windows 10

Установка Python и Pip в Ubuntu

В Ubuntu установить Python 3 можно через терминал. Запускаем его и вводим команду установки. Вторая команда выводит версию Python.

sudo apt install python3-minimal
python3 -V

Далее устанавливаем Pip и обновляем его. После обновления необходимо перезапустить текущую сессию (или перезагрузить компьютер), иначе возникнет ошибка во время вызова Pip.

sudo apt install python3-pip
pip3 install --user --upgrade pip

Основные команды Pip

Рассмотрим основные команды при работе с Pip в командой строке Windows и в терминале Ubuntu.

Если виртуальные окружения не используются, то во время установки пакета(ов) полезно использовать дополнительно ключ --user, устанавливая пакет(ы) локально только для текущего пользователя.

Установка VirtualEnv и VirtualEnvWrapper

VirtualEnv используется для создания виртуальных окружений для Python программ. Это необходимо для избежания конфликтов, позволяя установить одну версию библиотеки для одной программы, и другу для второй. Всё удобство использования VirtualEnv постигается на практике.

Установка VirtualEnv и VirtualEnvWrapper в Windows

В командной строке выполняем команды:

pip install virtualenv
pip install virtualenvwrapper-win

Установка VirtualEnv и VirtualEnvWrapper в Ubuntu

Для Ubuntu команда установки будет следующей:

pip3 install --user virtualenv virtualenvwrapper

После которой в конец ~/.bashrc добавляем:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source ~/.local/bin/virtualenvwrapper.sh

При новом запуске терминала должны будут появиться сообщения, начинающиеся на virtualenvwrapper.user_scripts creating, что говорит об успешном завершении установки.

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

Рассмотрим основные команды при работе с VirtualEnv в командой строке Windows и в терминале Ubuntu.

Находясь в одном из окружений, можно ставить пакеты через Pip, как обычно и нет необходимости добавлять ключ --user:

pip3 install markdown

Для Windows можно указать в переменных среды WORKON_HOME для переопределения пути, где хранятся виртуальные окружения. По умолчанию, используется путь %USERPROFILE%\Envs.

Установка PyCharm

PyCharm — интегрированная среда разработки для языка программирования Python. Обладает всеми базовыми вещами необходимых для разработки. В нашем случае огромное значение имеет хорошее взаимодействие PyCharm с VirtualEnv и Pip, чем мы и будем пользоваться.

Установка PyCharm в Windows

Скачиваем установщик PyCharm Community для Windows с официального сайта JetBrains. Если умеете проверять контрольные суммы у скаченных файлов, то не забываем это сделать.

В самой установке ничего особенного нету. По сути только нажимаем на кнопки next, и в завершение на кнопку Install. Единственно, можно убрать версию из имени папки установки, т.к. PyCharm постоянно обновляется и указанная версия в будущем станет не правильной.

Установка PyCharm в Ubuntu

Скачиваем установщик PyCharm Community для Linux с официального сайта JetBrains. Очень хорошей практикой является проверка контрольных сумм, так что если умеете, не ленитесь с проверкой.

Распаковываем архив с PyCharm и переименовываем папку с программой в pycharm-community, убрав версию из названия.

Теперь в директории ~/.local (Ctrl + H — Показ скрытый файлов), создаем папку opt, куда и перемещаем pycharm-community. В результате по пути /.local/opt/pycharm-community должны размещаться папки bin, help и т.д. Таким образом PyCharm будет находится в своём скромном месте и никому не будет мешать.

Далее выполняем команды в терминале:

cd /home/maksim/.local/opt/pycharm-community/bin
sh ./pycharm.sh

Производим установку. И очень важно в конце не забыть создать desktop файл для запуска PyCharm. Для этого в Окне приветствия в нижнем правом углу нажимаем на ConfigureCreate Desktop Entry.

Создание desktop файла

Установка PyCharm в Ubuntu из snap-пакета

PyCharm теперь можно устанавливать из snap-пакета. Если вы используете Ubuntu 16.04 или более позднюю версию, можете установить PyCharm из командной строки.

sudo snap install pycharm-community --classic

Использование VirtualEnv и Pip в PyCharm

Поддержка Pip и Virtualenv в PyCharm появилась уже довольно давно. Иногда конечно возникают проблемы, но взаимодействие работает в основном стабильно.

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

  1. Создаём проект со своим собственным виртуальным окружением, куда затем будут устанавливаться необходимые библиотеки;
  2. Предварительно создаём виртуальное окружение, куда установим нужные библиотеки. И затем при создании проекта в PyCharm можно будет его выбирать, т.е. использовать для нескольких проектов.

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

Создадим программу, генерирующую изображение с тремя графиками нормального распределения Гаусса Для этого будут использоваться библиотеки matplotlib и numpy, которые будут установлены в специальное созданное виртуальное окружение для программы.

Запускаем PyCharm и окне приветствия выбираем Create New Project.

В мастере создания проекта, указываем в поле Location путь расположения создаваемого проекта. Имя конечной директории также является именем проекта. В примере директория называется ‘first_program’.

Далее разворачиваем параметры окружения, щелкая по Project Interpreter. И выбираем New environment using Virtualenv. Путь расположения окружения генерируется автоматически. В Windows можно поменять в пути папку venv на Envs, чтобы команда workon находила создаваемые в PyCharm окружения. Ставить дополнительно галочки — нет необходимости. И нажимаем на Create.

Настройка первой программы в PyCharm

Теперь установим библиотеки, которые будем использовать в программе. С помощью главного меню переходим в настройки FileSettings. Где переходим в Project: project_nameProject Interpreter.

Чистое окружение у проекта

Здесь мы видим таблицу со списком установленных пакетов. В начале установлено только два пакета: pip и setuptools.

Справа от таблицы имеется панель управления с четырьмя кнопками:

  • Кнопка с плюсом добавляет пакет в окружение;
  • Кнопка с минусом удаляет пакет из окружения;
  • Кнопка с треугольником обновляет пакет;
  • Кнопка с глазом включает отображение ранних релизов для пакетов.

Для добавления (установки) библиотеки в окружение нажимаем на плюс. В поле поиска вводим название библиотеки. В данном примере будем устанавливать matplotlib. Дополнительно, через Specify version можно указать версию устанавливаемого пакета и через Options указать параметры. Сейчас для matplotlib нет необходимости в дополнительных параметрах. Для установки нажимаем Install Package.

Установка библиотеки matplotlib

После установки закрываем окно добавления пакетов в проект и видим, что в окружение проекта добавился пакет matplotlib с его зависимостями. В том, числе был установлен пакет с библиотекой numpy. Выходим из настроек.

Теперь мы можем создать файл с кодом в проекте, например, first.py. Код программы имеет следующий вид:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5, 100)

def gauss(sigma, mu):
    return 1/(sigma * (2*np.pi)**.5) * np.e ** (-(x-mu)**2/(2 * sigma**2))

dpi = 80
fig = plt.figure(dpi=dpi, figsize=(512 / dpi, 384 / dpi))

plt.plot(x, gauss(0.5, 1.0), 'ro-')
plt.plot(x, gauss(1.0, 0.5), 'go-')
plt.plot(x, gauss(1.5, 0.0), 'bo-')

plt.legend(['sigma = 0.5, mu = 1.0',
            'sigma = 1.0, mu = 0.5',
            'sigma = 1.5, mu = 0.0'], loc='upper left')

fig.savefig('gauss.png')

Для запуска программы, необходимо создать профиль с конфигурацией. Для этого в верхнем правом углу нажимаем на кнопку Add Configuration…. Откроется окно Run/Debug Configurations, где нажимаем на кнопку с плюсом (Add New Configuration) в правом верхнем углу и выбираем Python.

Далее указываем в поле Name имя конфигурации и в поле Script path расположение Python файла с кодом программы. Остальные параметры не трогаем. В завершение нажимаем на Apply, затем на OK.

Создание конфигурации для Python программы

Теперь можно выполнить программу и в директории с программой появится файл gauss.png:

Графики нормального распределение гаусса

Второй пример: использование предварительно созданного виртуального окружения

Данный пример можно использовать во время изучения работы с библиотекой. Например, изучаем PySide2 и нам придется создать множество проектов. Создание для каждого проекта отдельного окружения довольно накладно. Это нужно каждый раз скачивать пакеты, также свободное место на локальных дисках ограничено.

Более практично заранее подготовить окружение с установленными нужными библиотеками. И во время создания проектов использовать это окружение.

В этом примере мы создадим виртуальное окружения PySide2, куда установим данную библиотеку. Затем создадим программу, использующую библиотеку PySide2 из предварительно созданного виртуального окружения. Программа будет показывать метку, отображающую версию установленной библиотеки PySide2.

Начнем с экран приветствия PyCharm. Для этого нужно выйти из текущего проекта. На экране приветствия в нижнем правом углу через ConfigureSettings переходим в настройки. Затем переходим в раздел Project Interpreter. В верхнем правом углу есть кнопка с шестерёнкой, нажимаем на неё и выбираем Add…, создавая новое окружение. И указываем расположение для нового окружения. Имя конечной директории будет также именем самого окружения, в данном примере — pyside2. В Windows можно поменять в пути папку venv на Envs, чтобы команда workon находила создаваемые в PyCharm окружения. Нажимаем на ОК.

Создание окружения для PySide2

Далее в созданном окружении устанавливаем пакет с библиотекой PySide2, также как мы устанавливали matplotlib. И выходим из настроек.

Теперь мы можем создавать новый проект использующий библиотеку PySide2. В окне приветствия выбираем Create New Project.

В мастере создания проекта, указываем имя расположения проекта в поле Location. Разворачиваем параметры окружения, щелкая по Project Interpreter, где выбираем Existing interpreter и указываем нужное нам окружение pyside2.

Создание нового проекта использующего библиотеку PySide2

Для проверки работы библиотеки создаем файл second.py со следующий кодом:

import sys

from PySide2.QtWidgets import QApplication, QLabel
from PySide2 import QtCore

if __name__ == "__main__":
    app = QApplication(sys.argv)

    label = QLabel(QtCore.qVersion())
    label.show()

    QtCore.qVersion()

    sys.exit(app.exec_())

Далее создаем конфигурацию запуска программы, также как создавали для первого примера. После чего можно выполнить программу.

Заключение

У меня нет богатого опыта программирования на Python. И я не знаком с другими IDE для Python. Поэтому, возможно, данные IDE также умеют работать с Pip и Virtualenv. Использовать Pip и Virtualenv можно в командой строке или в терминале. Установка библиотеки через Pip может завершиться ошибкой. Есть способы установки библиотек без Pip. Также создавать виртуальные окружения можно не только с помощью Virtualenv.

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

  • Python перекодировать из utf 8 в windows 1251
  • Qbittorrent произошла ошибка ввода вывода windows 10
  • Qbittorrent не отвечает windows 10
  • Python скачать для windows 10 64 bit на русском официальный сайт
  • Python открыть файл в windows