Python venv: venv — Creation of virtual environments — Python 3.8.6 documentation

Содержание

Виртуальное окружение в Python — Настройка virtualenv

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

Зачем нужна виртуальная среда?

Python, как и большая часть других современных языков программирования, имеет собственный, уникальный способ загрузки, хранения и разрешения пакетов (или модулей). Это имеет свои преимущества, однако были принятые некоторые интересные решения, на счет хранения и разрешения пакетов, которые привели к определенным проблемам, а именно: как и где эти пакеты хранятся?

Содержание

  1. Зачем нужна виртуальная среда?
  2. Что такое виртуальная среда?
  3. Использование виртуальной среды
  4. Как работает виртуальная среда?
  5. Управление виртуальной средой при помощи virtualenvwrapper
  6. Использование разных версий Python
  7. Вывод

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

prefix.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

На Mac OS X, вы можете легко найти, где именно sys.prefix указывает на использование оболочки Python:

import sys print(sys.prefix) # ‘/System/Library/Frameworks/Python.framework/Versions/3.5’

import sys

print(sys.prefix) # ‘/System/Library/Frameworks/Python.framework/Versions/3.5’

К нашей статье в большей мере относятся сторонние пакеты, установленные при помощи easy_install или pip, обычно располагаются в одном из каталогов, на которую указывает site.getsitepackages:

import site data = site.getsitepackages() print(data)

import site

data = site.getsitepackages()

 

print(data)

Результат:

[ ‘/System/Library/Frameworks/Python.framework/Versions/3.5/Extras/lib/python’, ‘/Library/Python/3.5/site-packages’ ]

[

  ‘/System/Library/Frameworks/Python.framework/Versions/3.5/Extras/lib/python’,

  ‘/Library/Python/3.5/site-packages’

]

Зачем нам все эти детали?

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

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

разные версии проекта В. Может быть так, что проект А запрашивает версию 1.0.0, в то время как проект Б запрашивает более новую версию 2.0.0, к примеру.

Это большая проблема Python, поскольку он не может различать версии в каталоге «site-packages». Так что обе версии 1.0.0 и 2.0.0 будут находиться с тем же именем в одном каталоге:

/System/Library/Frameworks/Python.framework/Versions/3.5/Extras/lib/python/ProjectC

/System/Library/Frameworks/Python.framework/Versions/3.5/Extras/lib/python/ProjectC

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

Тут-то и вступает в игру виртуальная среда (вместе с инструментами virtualenv/ven)

Что такое виртуальная среда?

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

Это значит, что:

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

И так, в нашем небольшом примере вверху, нам просто нужно создать раздельную виртуальную среду для проектов А и Б. Каждая среда, в свою очередь, сможет зависеть от любой версии проекта В, независимо друг от друга.

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

virtualenv или pyenv.

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

Перед тем, как начать: если вы не пользуетесь Python 3, вам нужно будет установить инструмент virtualenv при помощи pip:

Если вы используете Python 3, у вас уже должен быть модуль venv, установленный в стандартной библиотеке.

Предположим, что вы пользуетесь последней версией инструмента venv, так как между ним и virtualenv существует несколько различий в отношении команд. По большому счету, это два весьма разных инструмента.

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

mkdir python-virtual-environments && cd python-virtual-environments

mkdir python-virtual-environments && cd python-virtual-environments

Создание новой виртуальной среды внутри каталога:

# Python 2: $ virtualenv env # Python 3 $ python3 -m venv env

# Python 2:

$ virtualenv env

 

# Python 3

$ python3 -m venv env

По умолчанию, это не включает в себя ни один из существующих сторонних пакетов.

Подход venv в Python 3 обладает преимуществом, которое вынуждает вас использовать определенную версию интерпретатора Python 3, который будет использован для создания виртуальной среды. Таким образом, вы избегаете недоразумений при выяснении, какая инсталляция Python базируется в новой виртуальной среде.

Начиная с Python 3.3 и 3.4, рекомендуемый способ создания виртуального пространства – это использование инструмента командной строки

pyvenv, который также включен в инсталляцию вашего Python 3 по умолчанию. Однако, в версии 3.6 и выше, вам нужен python3 -m venv.

В примере выше, эта команда создает каталог под названием «env», структура каталога которого схожа со следующей:

├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── easy_install │ ├── easy_install-3.5 │ ├── pip │ ├── pip3 │ ├── pip3.5 │ ├── python -> python3.5 │ ├── python3 -> python3.5 │ └── python3.5 -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 ├── include ├── lib │ └── python3.5 │ └── site-packages └── pyvenv.cfg

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

├── bin

│   ├── activate

│   ├── activate.csh

│   ├── activate.fish

│   ├── easy_install

│   ├── easy_install-3.5

│   ├── pip

│   ├── pip3

│   ├── pip3.5

│   ├── python -> python3.5

│   ├── python3 -> python3.5

│   └── python3.5 -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5

├── include

├── lib

│   └── python3.5

│       └── site-packages

└── pyvenv.cfg

Что находится в этих папках?

  • bin – файлы, которые взаимодействуют с виртуальной средой;
  • include
    – С-заголовки, компилирующие пакеты Python;
  • lib – копия версии Python вместе с папкой «site-packages», в которой установлена каждая зависимость.

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

Более интересные сейчас – скрипты activate в папке bin. Эти скрипты используются для настройки вашей оболочки для использования исполняемого файла среды Python и его сайтовых пакетов по умолчанию.

Чтобы использовать эти пакеты (или ресурсы) среды в изоляции, вам нужно «активировать» их. Чтобы сделать это, просто запустите:

Обратите внимание на то, что ваше приглашение командной строки теперь носит префикс вашей среды (в нашем случае – env). Это индикатор того, что env в данный момент активен, что в свою очередь говорит о том, что выполнимые файлы Python используют пакеты и настройки только этой среды.

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

Перед тем как проверить это, нам нужно вернуться назад в контекст «system» , выполнив команду deactivate:

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

Теперь установим bcrypt и используем его для хеширования пароля:

$ pip -q install bcrypt $ python -c «import bcrypt; print(bcrypt.hashpw(‘password’.encode(‘utf-8’), bcrypt.gensalt()))» $2b$12$vWa/VSvxxyQ9d.WGgVTdrell515Ctux36LCga8nM5QTW0.4w8TXXi

$ pip -q install bcrypt

$ python -c «import bcrypt; print(bcrypt.hashpw(‘password’.encode(‘utf-8’), bcrypt.gensalt()))»

$2b$12$vWa/VSvxxyQ9d.WGgVTdrell515Ctux36LCga8nM5QTW0.4w8TXXi

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

$ source env/bin/activate (env) $ python -c «import bcrypt; print(bcrypt.hashpw(‘password’.encode(‘utf-8’), bcrypt.gensalt()))» Traceback (most recent call last): File «<string>», line 1, in <module> ImportError: No module named ‘bcrypt’

$ source env/bin/activate

 

(env) $ python -c «import bcrypt; print(bcrypt.hashpw(‘password’.encode(‘utf-8’), bcrypt.gensalt()))»

 

Traceback (most recent call last):

  File «<string>», line 1, in <module>

ImportError: No module named ‘bcrypt’

Как мы видим, поведение команды the python -c «import bcrypt…» меняется после вызова источника env/bin/activate.

В одном примере, у нас есть доступный нам bcrypt, а в другом его нет. Это тот тип разделения, который мы ищем для виртуальной среды, и мы к нему пришли.

Как работает виртуальная среда?

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

Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python. С «деактивированной» средой запускаем:

$ which python /usr/bin/python

$ which python

/usr/bin/python

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

$ source env/bin/activate (env) $ which python /Users/michaelherman/python-virtual-environments/env/bin/python

$ source env/bin/activate

(env) $ which python

/Users/michaelherman/python-virtual-environments/env/bin/python

Активировав среду, мы теперь получаем другой путь к исполнимому файлу python, так как в активной среде, переменная среды $PATH несколько отличается.

Обратите внимание на разницу между первым путем в $PATH до и после активации:

$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin: $ source env/bin/activate (env) $ echo $PATH /Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

 

$ source env/bin/activate

(env) $ echo $PATH

/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

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

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

Это наталкивает на вопросы:

  • В чем разница между этими исполняемыми файлами?
  • Каким образом виртуальная среда исполняемого файлаPython может использовать что-либо, кроме системных сайт-пакетов?

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

Когда Python запускается, он ищет путь своего двоичного файла (в виртуальной среде он является копией или символической ссылке системного бинарного файла Python). Далее, он устанавливает расположение sys.prefix и sys.exec_prefix согласно с этим расположением, опуская часть bin в пути.

Путь, находящийся в sys.prefix далее используется для поиска каталога site-packages, путем поиска по связанного с ним пути lib/pythonX.X/site-packages/, где Х.Х – это версия используемого вами Python.

В нашем примере, бинарный файл расположен в /Users/michaelherman/python-virtual-environments/env/bin, это значит, что sys.prefix может быть /Users/michaelherman/python-virtual-environments/env, следовательно, используемый каталог site-packages может быть /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages. Наконец, этот путь наложен в массиве sys.path, который содержит все расположения, которые пакет может использовать.

Управление виртуальной средой при помощи virtualenvwrapper

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

Самые полезные функции virtualenvwrapper:

  • Организация каждой виртуальной среды в одном расположении;
  • Предоставляются методы, которые помогут вам легко создавать, удалять и копировать виртуальную среду, а также,
  • Предоставляет одну команду для переключения между средами

Некоторые функции могут показаться узкими, или незначительными, вы быстро поймете, что они – это отличные инструменты для вашего рабочего ритма.

Перед началом, вы можете скачать обёртку при помощи pip:

$ pip install virtualenvwrapper

$ pip install virtualenvwrapper

Для Windows нужно использовать virtualenvwrapper-win

После завершения установки, нам нужно активировать его функции оболочки. Это можно сделать, запустив источник установленного скрипта virtualenvwrapper.sh. Кода вы в первый раз устанавливаете его при помощи pip, выдача установки укажет вам точное расположение virtualenvwrapper.sh. Впрочем, вы можете просто запустить команду:

$ which virtualenvwrapper.sh /usr/local/bin/virtualenvwrapper.sh

$ which virtualenvwrapper.sh

/usr/local/bin/virtualenvwrapper.sh

Используя данный путь, добавьте следующие три строки в стартовый файл вшей оболочки. Если оболочку Bash, вы можете разместить эти строки и в файле ~/.bashrc file or ~/.profile. Для других оболочек, таких как zsh, csh или fish, вам может понадобиться определенные файлы запуска для этой оболочки. Главное, чтобы эти команды выполнялись при открытии новой оболочки или входе в неё.

 

export WORKON_HOME=$HOME/.virtualenvs # optional export PROJECT_HOME=$HOME/projects # optional source /usr/local/bin/virtualenvwrapper.sh

export WORKON_HOME=$HOME/.virtualenvs   # optional

export PROJECT_HOME=$HOME/projects      # optional

source /usr/local/bin/virtualenvwrapper.sh

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

Наконец, перезагружаем файл запуска:

Теперь здесь должен быть каталог, расположенный в $WORKON_HOME, который содержит все данные и файлы virtualenvwrapper:

$ echo $WORKON_HOME /Users/michaelherman/.virtualenvs

$ echo $WORKON_HOME

/Users/michaelherman/.virtualenvs

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

  • workon
  • deactivate
  • mkvirtualenv
  • cdvirtualenv
  • rmvirtualenv

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

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

$ mkvirtualenv my-new-project (my-new-project) $

$ mkvirtualenv my-new-project

(my-new-project) $

Это создаст и активирует новую виртуальную среду в каталоге, расположенном в $WORKON_HOME, где хранятся все среды virtualenvwrapper.

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

(my-new-project) $ deactivate $

(my-new-project) $ deactivate

$

Если у вас есть широкий выбор виртуальных сред, вы можете отсортировать их по списку при помощи функции workon:

$ workon my-new-project my-django-project web-scraper

$ workon

my-new-project

my-django-project

web-scraper

И, наконец, активировать:

$ workon web-scraper (web-scraper) $

$ workon web-scraper

(web-scraper) $

Если вы хотите иметь один инструмент и переключаться между версиями Python, virtualenv позволит вам это сделать. Virtualenv содержит параметр , который позволяет вам выбрать, какую версию Python использовать. Совместите это с командой which, и мы можем быстро выбрать предпочитаемую версию Python. К примеру, скажем, что мы хотим выбрать Python 3 в качестве нашей основной версии:

$ virtualenv -p $(which python3) blog_virtualenv

$ virtualenv -p $(which python3) blog_virtualenv

Это создаст новую среду python3.

Так как же это работает? Команда which используется для поиска переданной команды в вашей переменной $PATH и возвращает полный путь к этой команде. Так, полный путь к Python3 вернулся параметру , который в свою очередь принимает PYTHON_EXE. Это также можно практиковать и в Python2. Просто замените python3 на python2 (или python, если вы используете python2 по умолчанию).

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

Использование разных версий Python

В отличие от старого virtualenv, pyvenv не поддерживает создание виртуальной среды в произвольных версиях Python. Это значит, что вам придется использовать установленный Python 3 по умолчанию для каждой создаваемой вами виртуальной среды. Хотя вы можете обновить среду до последней системной версии Python (через опцию –upgrade) если она поменялась, вы все еще не можете указывать конкретную версию.

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

Здесь и вступает в игру pyenv.

Несмотря на схожесть в названиях (pyvenv и pyenv), pyenv отличается тем, что он направлен на то, чтобы помочь переключаться между версиями Python на как на системном уровне, так и на проектном. Другими словами, задача pyvenv разделять модули, задача pyenv – разделять версии Python.

Вы можете начать с установки pyenv как при помощи Homebrew (на OS X), или при помощи проекта pyenv-installer:

Homebrew

pyenv-installer

$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

К сожалению, pyenv не поддерживается Windows. Вы можете воспользоваться альтернативами в виде pywin и anyenv.

После установки pyenv в вашей системе, есть несколько базовых команд, которые вас могут заинтересовать:

КОД # Install new version установка новой версии

КОД # Внесение установленных версий в список

КОД # Выполнение «python-V» с использованием версии pyenv

$ pyenv install 3.5.0 # Установка новой версии $ pyenv versions # Внесение установленных версий в список $ pyenv exec python -V # Выполнение «python-V» с использованием версии pyenv

$ pyenv install 3.5.0   # Установка новой версии

$ pyenv versions        # Внесение установленных версий в список

$ pyenv exec python -V  # Выполнение «python-V» с использованием версии pyenv

Этими тремя строками мы устанавливаем версию Python 3.5.0, просим pyenv показать все доступные нам версии, после чего выполнить команду python –V, используя определенную pyenv версию.

Чтобы дать вам больше контроля, вы можете использовать любую доступную версию как для «глобального», так и «локального». Использование pyenv с локальными командами настраивает версию Python на определенный проект или директорию, сортируя версию в локальном файле .python-version. Мы можем настроить «локальную» версию следующим образом:

Это создает файл .python-version в нашем текущем каталоге, как вы можете видеть здесь:

$ ls -la total 16 drwxr-xr-x 4 michaelherman staff 136 Feb 22 10:57 . drwxr-xr-x 9 michaelherman staff 306 Jan 27 20:55 .. -rw-r—r— 1 michaelherman staff 7 Feb 22 10:57 .python-version -rw-r—r— 1 michaelherman staff 52 Jan 28 17:20 main.py

$ ls -la

total 16

drwxr-xr-x  4 michaelherman  staff  136 Feb 22 10:57 .

drwxr-xr-x  9 michaelherman  staff  306 Jan 27 20:55 ..

-rw-r—r—  1 michaelherman  staff    7 Feb 22 10:57 .python-version

-rw-r—r—  1 michaelherman  staff   52 Jan 28 17:20 main.py

Этот файл содержит только «2.7.11». Теперь, когда вы запускаете скрипт при помощи pyenv, он загрузит этот файл, и использует определенную версию, предполагая, что он действителен и существует в вашей системе.

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

import sys print(‘Using version:’, sys.version[:5])

import sys

print(‘Using version:’, sys.version[:5])

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

$ python main.py Using version: 2.7.5 $ pyenv global 3.5.0 $ pyenv exec python main.py Using version: 3.5.0 $ pyenv local 2.7.11 $ pyenv exec python main.py Using version: 2.7.11

$ python main.py

Using version: 2.7.5

 

$ pyenv global 3.5.0

$ pyenv exec python main.py

Using version: 3.5.0

 

$ pyenv local 2.7.11

$ pyenv exec python main.py

Using version: 2.7.11

Обратите внимание на то, как pyenv exec python main.py использует нашу «глобальную» версию Python по умолчанию, но затем он использует «локальную» версию после ее установки в текущий каталог.

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

Вывод

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

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

Python. Урок 17. Виртуальные окружения

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

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

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

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

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

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

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

ПО позволяющее создавать виртуальное окружение в Python

Программное обеспечение, которое позволяет создавать виртуальные окружения в 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-процесса.

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

При этом в переменную окружения 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

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. Работа с данными”.

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

Создание виртуального окружения в Python 3 с venv и virtualenv

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

 

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

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

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

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

 

Самый популярный пакет, который используется для создания виртуальных сред в 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

Я использую 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

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

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


pip list

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

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


deactivate

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

 

Если вы создаете множество виртуальных сред, например для тестирования в разных версиях 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 не будут выполняться Powershell. Команды работают только через CMD.

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

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

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

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


mkvirtualenv project_name

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


deactivate

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


workon django3.0

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


mkvirtualenv -p python2.7 project_name/venv

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


mkvirtualenv -h

 

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


sudo apt install python3-venv

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


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

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


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

 

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

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

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

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

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

 

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

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


pip freeze

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


pip freeze > Requirements.txt

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


pip install -r Requirements.txt

 

Теги: #python #virtualenv #venv

Создание виртуальных окружений и установка библиотек для Python 3 в IDE PyCharm / Хабр

Язык программирования 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 и 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.


Установка 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.

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

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

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


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

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

После установки закрываем окно добавления пакетов в проект и видим, что в окружение проекта добавился пакет 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.

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


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

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

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

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

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

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

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

В мастере создания проекта, указываем имя расположения проекта в поле Location. Разворачиваем параметры окружения, щелкая по Project Interpreter, где выбираем Existing interpreter и указываем нужное нам окружение 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

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

Virtualenv — это инструмент для разделения зависимостей, необходимых для проектов. При работе над несколькими проектами часто возникает проблема, что разным проектам нужны разные версии одних и тех же пакетов, virtualenv помогает нам решать подобные проблемы. Это также решает проблему засорения системы ненужными пакетами, так как виртуальные окружения можно легко создавать и удалять.

Установка virtualenv

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

pip install virtualenv

После установки вам может потребоваться добавить C:\Python34\Scripts в переменную среды PATH. Таким образом, такие команды, как pip и virtualenv можно будет выполнять из любой директории.

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

Создайте новую директорию с именем python_project и измените текущую рабочую директорию на python_project:

mkdir python_project
cd python_project

Чтобы создать виртуальное окружение внутри python_project, вам нужно выполнить следующую команду:

virtualenv my_env

Это создаст новую директорию my_env внутри python_project. Эта директория будет содержать копию интерпретатора python и копию исполняемого файла pip. Здесь мы использовали my_env в качестве имени, но вы можете использовать любое другое имя. Теперь ваше виртуальное окружение готово к использованию, вам просто нужно его активировать.

В этом руководстве есть один момент: мы установили virtualenv используя python 3.4. Предположим, у вас также есть python 2.7 и вы хотите создать виртуальное окружение, используя python 2.7 вместо python 3.4, вы можете сделать это с помощью следующей команды:

virtualenv -p c:\Python27\python.exe my_env

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

Для Windows выполните следующую команду:

my_env\Scripts\activate.bat

Для Linux:

source my_env/bin/activate

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

( my_env ) Path_to_the_project: $

Обратите внимание на (my_env), это означает, что вы сейчас работаете в виртуальном окружении.

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

Давайте попробуем установить пакет requests.

В Windows введите следующее:

my_env\Scripts\pip.exe install requests

Вы не можете ввести просто pip install requests в windows, потому что будет вызываться глобальный pip, если вы добавили C:\Python34\Scripts в переменную среды PATH. Если вы не добавили, то вы получите ошибку.

В Linux вам нужно ввести следующее:

my_env\Scripts\pip install requests

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

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

deactivate

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

Теперь вы должны видеть преимущества использования virtualenv. Это помогает нам изолировать зависимости (пакеты) проектов избегая конфликтов.

Установка и настройка VENV для Python3 в Ubuntu 18.04

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

Из этой статьи вы узнаете, как установить Python и настроить среду разработки на Ubuntu 18.04.

Предварительные требования

Для работы вам понадобится сервер Ubuntu 18.04 с базовыми настройками.

Обновление программного обеспечения

В системе Ubuntu 18.04 и других дистрибутивах, основанных на Debian, Python 3 и Python 2 установлены по умолчанию, поэтому на первом шаге достаточно выполнить обновление пакетов. Войдите на сервер Ubuntu 18.04 под sudo и обновите пакеты с помощью APT (Advanced Packaging Tool):

sudo apt update
sudo apt -y upgrade

Флаг –y автоматически подтвердит любые запросы системы.

Проверка версии Python

Проверьте версию Python 3 с помощью следующей команды:

python3 -V

В ответе вы увидите номер текущей версии, например:

Python 3.6.7

Установка pip

Чтобы управлять программными пакетами Python, установите pip — инструмент, который помогает устанавливать необходимые для проекта библиотеки и модули и управлять ими.

sudo apt install -y python3-pip

Теперь вы можете устанавливать пакеты Python3 с помощью pip:

pip3 install имя_пакета

Вместо имя_пакета укажите имя любого пакета или библиотеки Python, например, Django для веб-разработки или NumPy для научных вычислений. Например, для установки NumPy введите pip3 install numpy.

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

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

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

Установка venv (Virtual Environment)

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

Мы будем использовать модуль venv, часть стандартной библиотеки Python 3, который можно установить с помощью:

sudo apt install -y python3-venv

Создание виртуальной среды для приложения

Создать новую среду можно с помощью модуля venv. В примере ниже мы назовем новую среду env, вы можете указать любое желаемое название.

mkdir myapp && cd myapp
python3 -m venv env

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

Активируйте виртуальную среду с помощью приведенной ниже команды, где env — это имя вашего окружения разработки.

source env/bin/activate

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

(env) [email protected]:~/myapp$

Тестирование виртуальной среды

Запустите интерпретатор Python:

(env) [email protected]:~/myapp$ python

Помните, что в виртуальной среде Python 3 вместо команды python3 можно использовать python, а вместо pip3pip.

Воспользуйтесь функцией print(), чтобы создать стандартную программу «Hello, World»:

Python 3.6.5 (default, Apr  1 2018, 05:46:30
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
Hello, World!

>>> quit()

Деактивация виртуальной среды

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

(env) [email protected]:~/myapp$ deactivate

Использование в приложениях (shebang)

Очень важно в приложениях изменить полный путь #!/usr/bin/python3 на #!/usr/bin/env python. Это позволит выбирать правильный транслятор, независимо от того, выполняется ли скрипт в рамках venv и или в системном окружении. Если вы оставляете путь #!/usr/bin/python3, всегда будет использоваться системный интерепретатор, чувствительный к изменению среды.

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

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

Подготовим скрипт myapp/run.sh для запуска приложения service.py в рамках виртуального окружения со следующим содержимым:

#!/usr/bin/env bash

BASEDIR=$(dirname "$0")
echo "Executing App in '$BASEDIR'"

PORT=$1

source $BASEDIR/env/bin/activate

python $BASEDIR/service.py $PORT

Установим права на исполнение и протестируем его запуск:

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

Заключение

Изолированная виртуальная среда разработки Python создана, можно приступать к разработке на python.

Виртуальные окружения — Python для сетевых инженеров

Виртуальные окружения:

  • позволяют изолировать различные проекты
  • зависимости, которых требуют разные проекты, находятся в разных местах
  • Например, если в проекте 1 требуется пакет версии 1.0, а в проекте 2 требуется тот же пакет, но версии 3.1 пакеты, которые установлены в виртуальных окружениях, не перебивают глобальные пакеты
  • позволяют удобно работать с разными версиями Python

В курсе используется virtualenvwrapper: он позволяет немного проще работать с виртуальными окружениями.

Установка virtualenvwrapper с помощью pip:

python3.7 -m pip install virtualenvwrapper

После установки, в .bashrc нужно добавить несколько строк

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.7
export WORKON_HOME=~/venv

. /usr/local/bin/virtualenvwrapper.sh

Для того чтобы скрипт virtualenvwrapper.sh выполнился и можно было работать с виртуальными окружениями, надо перезапустить bash. Например, таким образом:

Создание виртуального окружения, в котором используется Python 3.7 (эта же команда переведет вас в виртуальное окружение):

mkvirtualenv --python=/usr/local/bin/python3.7 pyneng-py3

Установка IPython внутри виртуального окружения:

После этого, можно открывать ipython (вывод должен быть примерно таким):

$ ipython
Python 3.7.0 (default, Jul  7 2018, 18:25:30)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

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

pip install pytest pytest-clarity pyyaml tabulate jinja2 textfsm pexpect netmiko

Также надо установить graphviz принятым способом в ОС (пример для debian):

Дополнительные возможности

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

[~]
[email protected]:
$ mkvirtualenv --python=/usr/local/bin/python3.7 pyneng-py3
Running virtualenv with interpreter /usr/local/bin/python3.7
Using base prefix '/usr/local'
New python executable in /home/vagrant/venv/pyneng-py3/bin/python3.7
Also creating executable in /home/vagrant/venv/pyneng-py3/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/vagrant/venv/pyneng-py3/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/vagrant/venv/pyneng-py3/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/vagrant/venv/pyneng-py3/bin/preactivate
virtualenvwrapper.user_scripts creating /home/vagrant/venv/pyneng-py3/bin/postactivate
virtualenvwrapper.user_scripts creating /home/vagrant/venv/pyneng-py3/bin/get_env_details
(venv:pyneng-py3)
[~]
[email protected]:

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

Файл /home/vagrant/venv/pyneng-py3/bin/postactivate отвечает за то, какие действия будут выполняться после перехода в виртуальное окружение. По умолчанию, он пустой.

Но, если добавить в него команду cd /home/vagrant/online-3-natasha, она будет автоматически выполняться каждый раз, когда вы переходите в виртуальное окружение. И вы будете сразу и переходить в виртуальное окружение, и переходить в каталог репозитория.

Тогда вывод будет таким:

[~]
[email protected]:
$ workon pyneng-py3

(venv:pyneng-py3)
[~/online-3-natasha]
[email protected]:
$

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

Модуль venv обеспечивает поддержку для создания легких «виртуальных» среды »с собственными каталогами сайтов, опционально изолированными от системы. каталоги сайта. Каждая виртуальная среда имеет собственный двоичный файл Python (который соответствует версии двоичного файла, который использовался для создания этой среды) и может иметь собственный независимый набор установленных пакетов Python на своем сайте каталоги.

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

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

 python3 -m venv / путь / к / новому / виртуальному / среде
 

При выполнении этой команды создается целевой каталог (создается любой родительский каталоги, которые еще не существуют) и помещает pyvenv.cfg файл в нем с ключом home , указывающим на установку Python, из которой команда был запущен (общее имя целевого каталога — .venv ). Это также создает подкаталог bin (или Scripts в Windows), содержащий копию / символическую ссылку двоичных / двоичных файлов Python (в зависимости от платформы или аргументов используется во время создания среды). Он также создает (изначально пустой) lib / pythonX.Y / site-packages подкаталог (в Windows это Lib \ site-packages ).Если указан существующий каталог, он будет повторно использованный.

Не рекомендуется с версии 3.6: pyvenv был рекомендованным инструментом для создания виртуальных сред для Python 3.3 и 3.4, и устарел в Python 3.6.

Изменено в версии 3.5: теперь рекомендуется использовать venv для создания виртуальных сред.

В Windows вызовите команду venv следующим образом:

 c: \> c: \ Python35 \ python -m venv c: \ путь \ к \ myenv
 

В качестве альтернативы, если вы настроили переменные PATH и PATHEXT для ваша установка Python:

 c: \> python -m venv c: \ путь \ к \ myenv
 

Команда, если запустить с -h , покажет доступные параметры:

 использование: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT]
            ENV_DIR [ENV_DIR...]

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

позиционные аргументы:
  ENV_DIR Каталог, в котором создается среда.

необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  --system-site-packages
                        Предоставьте виртуальной среде доступ к системе
                        site-packages dir.
  --symlinks Пытаться использовать символические ссылки, а не копии, когда символические ссылки
                        не являются стандартными для платформы.--copies Пытаться использовать копии, а не символические ссылки, даже если
                        символические ссылки используются для платформы по умолчанию.
  --clear Удалить содержимое каталога среды, если оно
                        уже существует до создания среды.
  --upgrade Обновить каталог среды, чтобы использовать эту версию
                        Python, при условии, что Python был обновлен на месте.
  --without-pip Пропускает установку или обновление pip в виртуальном
                        среда (по умолчанию pip загружается)
  --prompt PROMPT Предоставляет альтернативный префикс приглашения для этого
                        среда.После создания среды вы можете активировать ее, например по
поиск скрипта активации в его каталоге bin.
 

Изменено в версии 3.4: по умолчанию устанавливается pip, добавлены --without-pip и --copies варианты

Изменено в версии 3.4: в более ранних версиях, если целевой каталог уже существовал, ошибка была повышен, если не предусмотрена опция --clear или --upgrade .

Примечание

Хотя символические ссылки поддерживаются в Windows, использовать их не рекомендуется.Из Особое внимание следует обратить на то, что двойной щелчок python.exe в проводнике быстро разрешит символическую ссылку и проигнорирует виртуальную среду.

Примечание

В Microsoft Windows может потребоваться включить Activate.ps1 script, установив политику выполнения для пользователя. Вы можете сделать это введя следующую команду PowerShell:

PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

См. Сведения о политиках выполнения Чтобы получить больше информации.

Созданный файл pyvenv.cfg также включает include-system-site-packages ключ, установить true , если venv запустить с параметром --system-site-packages , false в противном случае.

Если не указана опция --without-pip , surepip будет вызывается для начальной загрузки pip в виртуальную среду.

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

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

Платформа

Корпус

Команда для активации виртуальной среды

POSIX

баш / зш

$ source / bin / activate

рыбы

$. /bin/activate.fish

чш / тчш

$ source /bin/activate.csh

Ядро PowerShell

$ /bin/Activate.ps1

Окна

cmd.exe

C: \> \ Scripts \ activate.bat

PowerShell

PS C: \> \ Scripts \ Activate.пс1

Вам не обязательно , чтобы активировать среду; активация просто добавляет двоичный каталог виртуальной среды к вашему пути, чтобы «Python» вызывает интерпретатор Python виртуальной среды, и вы можете запустить установленные скрипты без использования их полного пути. Однако все скрипты установленный в виртуальной среде должен работать без активации, и автоматически запускать Python виртуальной среды.

Вы можете деактивировать виртуальную среду, набрав «деактивировать» в своей оболочке.Точный механизм зависит от платформы и является внутренней реализацией. деталь (обычно используется сценарий или функция оболочки).

Новое в версии 3.4: скрипты активации fish и csh .

Новое в версии 3.8: PowerShell

.

28,3. venv — Создание виртуальных сред — документация Python 3.4.10

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

28.3.1. Создание виртуальных сред

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

 pyvenv / путь / к / новому / виртуальному / среде
 

При выполнении этой команды создается целевой каталог (создается любой родительский каталоги, которые еще не существуют) и помещает pyvenv.cfg файл в нем с домашним ключом, указывающим на установку Python, команда была запущена от. Он также создает подкаталог bin (или Scripts в Windows) содержащий копию двоичного файла python (или двоичных файлов, в случае Windows). Он также создает (изначально пустой) lib / pythonX.Y / site-packages подкаталог (в Windows это Lib \ site-packages).

В Windows вам может потребоваться вызвать сценарий pyvenv следующим образом, если вы нет соответствующих настроек PATH и PATHEXT:

 c: \ Temp> c: \ Python34 \ python c: \ Python34 \ Tools \ Scripts \ pyvenv.py myenv
 

или аналогично:

 c: \ Temp> c: \ Python34 \ python -m venv myenv
 

Команда, если запускаться с -h, покажет доступные параметры:

 использование: venv [-h] [--system-site-packages] [--symlinks] [--clear]
            [--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]

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

позиционные аргументы:
  ENV_DIR Каталог, в котором создается среда.

необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  --system-site-packages Дать доступ к глобальному каталогу site-packages в
                         виртуальная среда.--symlinks Пытаться использовать символические ссылки, а не копии, когда символические ссылки
                         не являются стандартными для платформы.
  --copies Пытаться использовать копии, а не символические ссылки, даже если
                         символические ссылки используются для платформы по умолчанию.
  --clear Удалить каталог среды, если он уже существует.
                         Если не указано и каталог существует, возникает ошибка.
                         поднял.
  --upgrade Обновить каталог среды, чтобы использовать эту версию
                         Python, при условии, что Python был обновлен на месте.--without-pip Пропускает установку или обновление pip в виртуальном
                         среда (по умолчанию pip загружается)
 

В зависимости от того, как была вызвана функция venv, сообщение об использовании может незначительно отличаться, например ссылаясь на pyvenv, а не на venv.

Изменено в версии 3.4: по умолчанию устанавливается pip, добавлены параметры —without-pip и —copies. варианты

Изменено в версии 3.4: в более ранних версиях, если целевой каталог уже существовал, ошибка была поднят, если не указан параметр —clear или —upgrade.Сейчас, если указан существующий каталог, его содержимое удаляется и каталог обрабатывается так, как если бы он был создан заново.

Созданный файл pyvenv.cfg также включает ключ include-system-site-packages, установите значение true, если venv запустить с параметром —system-site-packages, иначе — false.

Если не задана опция —without-pip, то убедитесь, что pip будет вызывается для загрузки пакета в виртуальную среду.

Можно указать pyvenv несколько путей, и в этом случае идентичный virtualenv будет создан в соответствии с заданными параметрами на каждом предоставленный путь.

После создания venv его можно «активировать» с помощью сценария в двоичный каталог venv. Вызов скрипта зависит от платформы:

Платформа Ракушка Команда для активации виртуальной среды
Posix баш / зш $ источник / bin / активировать
рыб $. /bin/activate.fish
csh / tcsh $ источник /bin/activate.csh
Окна cmd.exe C:> /Scripts/activate.bat
PowerShell PS C:> /Scripts/Activate.ps1

вам не нужно специально для активации среды; активация просто добавляет двоичный каталог venv к вашему пути, так что «python» вызывает интерпретатор Python от venv, и вы можете запускать установленные скрипты без необходимости используйте их полный путь.Однако все скрипты, установленные в venv, должны быть можно запускать, не активируя его, и запускать с Python Venv автоматически.

Вы можете деактивировать venv, набрав «деактивировать» в вашей оболочке. Точный механизм зависит от платформы: например, сценарий активации Bash определяет функция «деактивировать», тогда как в Windows есть отдельные сценарии, называемые deactivate.bat и Deactivate.ps1, которые устанавливаются, когда venv создан.

Новое в версии 3.4: скрипты активации fish и csh.

Примечание

Виртуальная среда (также называемая venv) — это Python среда, такая что интерпретатор Python, библиотеки и скрипты установленные в нем изолированы от установленных в других виртуальных среды и (по умолчанию) любые библиотеки, установленные в «системном» Python, то есть тот, который установлен как часть вашей операционной системы.

Venv — это дерево каталогов, которое содержит исполняемые файлы Python и другие файлы, которые указывают на то, что это venv.

Общие инструменты установки, такие как Setuptools и pip, работают как ожидается с venvs — i.е. когда venv активен, они устанавливают Python пакеты в venv без необходимости явно указывать на это. Конечно, вам нужно сначала установить их в venv: это может быть выполняется запуском ez_setup.py с активированным venv, с последующим запуском easy_install pip. В качестве альтернативы вы можете скачать исходные архивы и запустите установку python setup.py после распаковки, с активированным венвом.

Когда venv активен (т. Е. Работает интерпретатор Python venv), атрибуты sys.prefix и sys.exec_prefix указывают на базу каталог venv, тогда как sys.base_prefix и sys.base_exec_prefix указывает на установку Python не Venv который был использован для создания venv. Если венв не активен, то sys.prefix совпадает с sys.base_prefix и

.

26,9. venv — Создание виртуальных сред — документация Python 3.3.7

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

26.9.1. Создание виртуальных сред

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

 pyvenv / путь / к / новому / виртуальному / среде
 

При выполнении этой команды создается целевой каталог (создается любой родительский каталоги, которые еще не существуют) и помещает pyvenv.cfg файл в нем с домашним ключом, указывающим на установку Python, команда была запущена от. Он также создает подкаталог bin (или Scripts в Windows) содержащий копию двоичного файла python (или двоичных файлов, в случае Windows). Он также создает (изначально пустой) lib / pythonX.Y / site-packages подкаталог (в Windows это Lib \ site-packages).

В Windows вам может потребоваться вызвать сценарий pyvenv следующим образом, если вы нет соответствующих настроек PATH и PATHEXT:

 c: \ Temp> c: \ Python33 \ python c: \ Python33 \ Tools \ Scripts \ pyvenv.py myenv
 

или аналогично:

 c: \ Temp> c: \ Python33 \ python -m venv myenv
 

Команда, если запускаться с -h, покажет доступные параметры:

Использование
: pyvenv [-h] [--system-site-packages] [--symlinks] [--clear]
              [--upgrade] ENV_DIR [ENV_DIR ...]

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

позиционные аргументы:
  ENV_DIR Каталог, в котором создается среда.

необязательные аргументы:
  -h, --help показать это справочное сообщение и выйти
  --system-site-packages Дать доступ к глобальному каталогу site-packages в
                         виртуальная среда.--symlinks Пытаться использовать символические ссылки, а не копии, когда символические ссылки
                         не являются стандартными для платформы.
  --clear Удалить каталог среды, если он уже существует.
                         Если не указано и каталог существует, возникает ошибка.
                         поднял.
  --upgrade Обновить каталог среды, чтобы использовать эту версию
                         Python, при условии, что Python был обновлен на месте.
 

Если целевой каталог уже существует, будет выдана ошибка, если только была предоставлена ​​опция —clear или —upgrade.

Созданный файл pyvenv.cfg также включает ключ include-system-site-packages, установите значение true, если venv запустить с параметром —system-site-packages, иначе — false.

Можно указать pyvenv несколько путей, и в этом случае идентичный virtualenv будет создан в соответствии с заданными параметрами на каждом предоставленный путь.

После создания venv его можно «активировать» с помощью сценария в двоичный каталог venv. Вызов скрипта зависит от платформы: on платформа Posix, вы обычно делаете:

 $ источник  / bin / activate
 

, тогда как в Windows вы можете сделать:

 C: \>  / Скрипты / активировать
 

, если вы используете cmd.exe shell, или, возможно:

 PS C: \>  /Scripts/Activate.ps1
 

, если вы используете PowerShell.

Вам не нужно специально для активации среды; активация просто добавляет двоичный каталог venv к вашему пути, так что «python» вызывает интерпретатор Python от venv, и вы можете запускать установленные скрипты без необходимости используйте их полный путь. Однако все скрипты, установленные в venv, должны быть можно запускать, не активируя его, и запускать с Python Venv автоматически.

Вы можете деактивировать venv, набрав «деактивировать» в вашей оболочке. Точный механизм зависит от платформы: например, сценарий активации Bash определяет функция «деактивировать», тогда как в Windows есть отдельные сценарии, называемые deactivate.bat и Deactivate.ps1, которые устанавливаются, когда venv создан.

Примечание

Виртуальная среда (также называемая venv) — это Python среда, такая что интерпретатор Python, библиотеки и скрипты установленные в нем изолированы от установленных в других виртуальных среды и (по умолчанию) любые библиотеки, установленные в «системном» Python, я.е. тот, который установлен как часть вашей операционной системы.

Venv — это дерево каталогов, которое содержит исполняемые файлы Python и другие файлы, которые указывают на то, что это venv.

Общие инструменты установки, такие как Setuptools и pip, работают как ожидается с venvs — т.е. когда venv активен, они устанавливают Python пакеты в venv без необходимости явно указывать на это. Конечно, вам нужно сначала установить их в venv: это может быть выполняется запуском ez_setup.ру с активированным венвом, с последующим запуском easy_install pip. В качестве альтернативы вы можете скачать исходные архивы и запустите установку python setup.py после распаковки, с активированным венвом.

Когда venv активен (т. Е. Работает интерпретатор Python venv), атрибуты sys.prefix и sys.exec_prefix указывают на базу каталог venv, тогда как sys.base_prefix и sys.base_exec_prefix указывает на установку Python не Venv который был использован для создания venv. Если венв не активен, то sys.префикс такой же, как sys.base_prefix и sys.exec_prefix — это то же самое, что sys.base_exec_prefix (они все указывают на установку Python, отличную от Venv).

Когда venv активен, любые параметры, которые изменяют путь установки, будут игнорируется из всех файлов конфигурации distutils, чтобы предотвратить случайно установлен за пределами виртуальной среды.

При работе в командной оболочке пользователи могут активировать venv, запустив активировать скрипт в каталоге исполняемых файлов venv (точное имя файла зависит от оболочки), который добавляет каталог venv для исполняемых файлов в начало переменная среды PATH для запущенной оболочки.Не должно быть необходимость в других обстоятельствах активировать venv — скрипты, установленные в В venvs есть строка shebang, которая указывает на интерпретатор Python venv. Эта означает, что скрипт будет работать с этим интерпретатором независимо от значения ПУТИ. В Windows поддерживается обработка строк shebang, если у вас есть Установлен Python Launcher для Windows (он был добавлен в Python в версии 3.3 — см. PEP 397 для более подробной информации). Таким образом, дважды щелкнув установленный скрипт в окно проводника Windows должно запускать скрипт с правильным интерпретатором без ссылки на его venv в PATH.

.

, какой shebang использовать для скриптов Python, запускаемых под pyenv virtualenv

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

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

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

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa