Рубрики
Без рубрики

Венв – создать виртуальную среду

Автор оригинала: Doug Hellmann.

Цель:

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

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

Создание условий

Первичный интерфейс командной строки для VINY опирается на возможность Python для выполнения функции «основной» в модуле, используя опцию -M .

$ python3 -m venv /tmp/demoenv

Может быть установлен отдельный <код> Pyvenv приложение командной строки, в зависимости от того, как был построен интерпретатор Python. Следующая команда имеет тот же эффект, что и предыдущий пример.

$ pyvenv /tmp/demoenv

Использование -M VINOV предпочтительнее, поскольку он требует явно выбора переводчика Python, поэтому не может быть запутанности относительно номера версии или пути импорта, связанного с полученной виртуальной средой.

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

Каждая виртуальная среда содержит каталог BIN , где устанавливается локальный интерпретатор и любые исполняемые сценарии, <код> включают в себя каталог для файлов, связанных с созданием расширений C, и <код> lib Directory, с отдельным <Код> Пакеты сайта Расположение для установки пакетов.

$ ls -F /tmp/demoenv

bin/
include/
lib/
pyvenv.cfg

У DEUTAL BIN Directory содержит «активацию» сценариев для нескольких вариантов оболочек Unix. Они могут быть использованы для установки виртуальной среды на пути поиска оболочки, чтобы убедиться, что оболочка выбирает программы, установленные в среде. Не нужно активировать среду для использования программ, установленных в нее, но это может быть удобнее.

$ ls -F /tmp/demoenv/bin

activate
activate.csh
activate.fish
easy_install*
easy_install-3.6*
pip*
pip3*
pip3.6*
python@
python3@

На платформах, которые их поддерживают, используются символические ссылки, а не копирование исполняемых файлов, таких как интерпретатор Python. В этой среде PIP устанавливается как локальная копия, но интерпретатор – это SymLink.

Наконец, среда включает в себя <код> pyvenv.cfg файл с настройками, описывающими, как настроена среда и должна вести себя. HOME Переменные указывает на местоположение интерпретатора Python, где <код> VINV был запущен для создания среды. Включает-систему-сайт-пакеты – это логическое значение, указывающее на то, установлена ли пакеты вне виртуальной среды, на уровне системы, должны быть видны в виртуальной среде. И <Код> версия – это версия Python, используемая для создания среды.

pyvenv.cfg.

home = /Library/Frameworks/Python.framework/Versions/3.6/bin
include-system-site-packages = false
version = 3.6.4

Виртуальная среда более полезна с такими инструментами, как <код> pip и setUptools , доступных для установки других пакетов, поэтому <код> pyvenv устанавливает их по умолчанию. Чтобы создать гопушую среду без этих инструментов, пройдите - без-PIP в командной строке.

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

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

$ python3 -m venv /tmp/sphinx1
$ python3 -m venv /tmp/sphinx2

Затем установите версии инструментов для тестирования.

$ /tmp/sphinx1/bin/pip install

Collecting
  Using cached Sphinx-1.3.6-py2.py3-none-any.whl
Collecting
  Using cached Pygments-2.2.0-py2.py3-none-any.whl
Collecting
  Using cached sphinx_rtd_theme-0.2.4-py2.py3-none-any.whl
Collecting
  Using cached Babel-2.5.3-py2.py3-none-any.whl
Collecting
  Using cached alabaster-0.7.10-py2.py3-none-any.whl
Collecting
  Using cached Jinja2-2.10-py2.py3-none-any.whl
Collecting
  Using cached docutils-0.14-py3-none-any.whl
Collecting
  Using cached snowballstemmer-1.2.1-py2.py3-none-any.whl
Collecting
  Using cached six-1.11.0-py2.py3-none-any.whl
Collecting
  Using cached pytz-2018.3-py2.py3-none-any.whl
Collecting
  Using cached MarkupSafe-1.0.tar.gz
Installing collected packages: Pygments, sphinx-rtd-theme, pytz,
babel, alabaster, MarkupSafe, Jinja2, docutils, snowballstemmer,
six, Sphinx
  Running setup.py install for MarkupSafe: started
    Running setup.py install for MarkupSafe: finished with
status 'done'
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Pygments-2.2.0
Sphinx-1.3.6 alabaster-0.7.10 babel-2.5.3 docutils-0.14
pytz-2018.3 six-1.11.0 snowballstemmer-1.2.1 sphinx-rtd-
theme-0.2.4

$ /tmp/sphinx2/bin/pip install

Collecting
  Using cached Sphinx-1.4.4-py2.py3-none-any.whl
Collecting imagesize (from
  Using cached imagesize-1.0.0-py2.py3-none-any.whl
Collecting
  Using cached Pygments-2.2.0-py2.py3-none-any.whl
Collecting
  Using cached snowballstemmer-1.2.1-py2.py3-none-any.whl
Collecting
  Using cached alabaster-0.7.10-py2.py3-none-any.whl
Collecting
  Using cached Jinja2-2.10-py2.py3-none-any.whl
Collecting
  Using cached docutils-0.14-py3-none-any.whl
Collecting
  Using cached Babel-2.5.3-py2.py3-none-any.whl
Collecting
  Using cached six-1.11.0-py2.py3-none-any.whl
Collecting
  Using cached MarkupSafe-1.0.tar.gz
Collecting
  Using cached pytz-2018.3-py2.py3-none-any.whl
Installing collected packages: imagesize, Pygments,
snowballstemmer, alabaster, MarkupSafe, Jinja2, docutils, pytz,
babel, six, Sphinx
  Running setup.py install for MarkupSafe: started
    Running setup.py install for MarkupSafe: finished with
status 'done'
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Pygments-2.2.0
Sphinx-1.4.4 alabaster-0.7.10 babel-2.5.3 docutils-0.14
imagesize-1.0.0 pytz-2018.3 six-1.11.0 snowballstemmer-1.2.1

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

$ /tmp/sphinx1/bin/sphinx-build --version

Sphinx (sphinx-build) 1.3.6

$ /tmp/sphinx2/bin/sphinx-build --version

Sphinx (sphinx-build) 1.4.4

Смотрите также