chroot — это подобие команды virtualenv на системном уровне: позволяет сделать так, чтобы корневой каталог (/) располагался по адресу, указанному пользователем, а не в реальном корневом каталоге (это предоставляет пользователю отдельное пространство (https://en.wikipedia.org/wiki/User-space)).
Docker больше не использует chroot и даже Linux Containers (позволяет включить в число доступных образов Docker машины Citrix и Solaris), но принцип работы контейнеров Docker Containers не изменился. Их конфигурационные файлы называются Dockerfiles (https://docs.docker.com/engine/reference/builder/), с их помощью создаются образы Docker (https://docs.docker.com/engine/userguide/containers/dockerimages/), которые можно разместить в Docker Hub (https://docs.docker.com/docker-hub/), репозитории пакетов Docker (аналогичен PyPI).
Корректно сконфигурированные образы Docker занимают гораздо меньше места, чем среды, созданные с помощью Buildout или conda, поскольку Docker использует файловую систему AUFS, хранящую «разность» образа, а не сам образ. Поэтому, если вы хотите построить и протестировать свой пакет для нескольких версий зависимости, можете создать основной образ Docker с виртуальной средой35 (средой Buildout или conda), содержащей все остальные зависимости.
Вы унаследуете от этого образа все остальные образы, добавив на последнем уровне одну изменяющуюся зависимость. В результате все унаследованные контейнеры будут содержать только отличающиеся библиотеки, разделяя при этом содержимое основного образа. Для получения более подробной информации обратитесь к документации Docker по адресу https://docs.docker.com/.
23 Если вам понадобится создавать расширения для Python с помощью языка C, обратитесь к статье «Расширяем Python с помощью C или C++» (https://docs.python.org/3/extending/extending.html). Для получения более подробной информации см. главу 15 книги «Python Cookbook» (http://bit.ly/python-cookbook).
24 Сниппеты — это фрагменты кода, которые часто повторяются, вроде стилей CSS или определений классов. Вы можете использовать для них автозаполнение, если введете несколько символов, а затем нажмете клавишу Tab.
25 Просто откройте редактор, введя в командной строке vi (или vim) и нажав клавишу Enter, потом введите :help и нажмите Enter для прохождения обучения.
26 Для того чтобы найти домашний каталог в Windows, откройте Vim и введите команду :echo $HOME.
27 Нам нравится Реймонд Хеттингер. Если бы все писали код так, как он рекомендует, мир был бы гораздо лучше.
28 Electron — платформа для создания кросс-платформенных настольных приложений с помощью HTML, CSS и JavaScript.
29 https://github.com/Microso/PTVS/wiki/Features-Matrix.
30 Если вам больше нравится, используйте команду Set-ExecutionPolicy AllSigned.
31 POSIX расшифровывается как Portable Operating System Interface (портируемый интерфейс операционных систем). Включает набор стандартов IEEE, указывающих ОС ее поведение и интерфейс для простых команд оболочки, ввода/вывода, работы с потоками и для других сервисов и утилит. Большая часть дистрибутивов Linux и Unix совместима с POSIX, Darwin (операционная система, лежащая в основе Mac OS X и iOS), была совместима с версии Leopard (10.5). Фраза «система POSIX» означает систему, совместимую с POSIX.
32 Egg — это ZIP-архив с особой структурой. Эти архивы были заменены на архивы wheels в PEP 427 (https://www.python.org/dev/peps/pep-0427/). Были представлены популярной библиотекой упаковки Setuptools (сейчас библиотека по умолчанию), предлагающей полезный интерфейс для distutils (https://docs.python.org/3/library/distutils.html) из стандартной библиотеки Python. Вы можете прочесть об особенностях этих форматов в разделе Wheel vs Egg (https://packaging.python.org/en/latest/wheel_egg/) руководства Python Packaging User.
33 YAML (https://en.wikipedia.org/wiki/YAML) расшифровывается как YAML Ain’t Markup Language — «не просто еще один язык разметки».
34 Виртуальная машина — это приложение, которое эмулирует компьютерную систему путем имитации желаемого аппаратного обеспечения и предоставления требуемой операционной системы для компьютера-хоста.
35 Виртуальная среда внутри контейнера Docker изолирует вашу среду Python, сохраняя версию Python операционной системы, которая может понадобиться для ваших приложений. Поэтому прислушайтесь к нашему совету ничего не устанавливать с помощью pip (или чего-то еще) в системный каталог Python.
Часть II. Переходим к делу
Теперь у нас есть интерпретатор Python, виртуальные среды и редактор или IDE, так что мы готовы заняться делом. В этой части книги мы не будем изучать язык (в разделе «Изучаем Python» приложения перечислены отличные ресурсы, которые помогут вам в этом). Мы хотим, чтобы после прочтения вы почувствовали себя настоящим программистом Python, знающим все хитрости лучших питонистов. В эту часть входят следующие главы.
• Глава 4 «Пишем отличный код». Мы кратко рассмотрим стиль, соглашения, идиомы и подводные камни.