Автор оригинала: 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
Смотрите также
- Стандартная библиотечная документация для Venv
- pep 405 – виртуальная среда Python
- virtualenv – версия виртуальной среды Python, которая работает для Python 2 и 3.
- virtualenvwrapper – набор оболочек для Virtualenv, чтобы облегчить управление большим количеством сред.
- SPHINX – инструмент для преобразования входных файлов реструктуренных элементов в HTML, LATEX и другие форматы для потребления.