Python precompile standard library что это
Сайт ARNY.RU
Как установить Python — быстро подготавливаем удобную среду для старта кода на языке программирования Python.
Кодинг на питоне нам нужен для подготовки к CCNA7, CCNP Enterprise и для написания боевых скриптов работы с оборудованием. Есть много различных сред для питона. Расскажу про самую простую среду и второй вариант, про самую удобную. Возможно гуру питона возразят насчёт самой удобной (хотя вряд ли гуру зайдёт по ссылке «как установить Python» ), но для начинающего кодера это именно так.
Ставить будем на Windows 10. И ставить версию 3, так как версия 2 неактуальна на сегодняшний день.
Python IDLE
IDLE (Integrated Development and Learning Environment) самый простой способ установить неудобную среду для написания программ. Почему-то по всем ссылкам запроса «как установить питон» или «как установить Python» предлагается именно она.
Тут всё проще некуда, открываем командную строку, пишем там python, Enter и винда сама предложит установить Python. Будет он не последней версии, зато ничего делать не надо.
Или другой вариант чуть сложнее, идём на python.org, скачиваем последнюю версию:
Устанавливаем, выбирая Add Python 3.9 to PATH и Customise Installation. Далее всё по умолчанию, но нужно поставить ещё галку Precompile standard library (вся установка
200Mb на диске). После установки запускаем:
Открывается окошко IDLE Shell, там выбираем File-New File. Всё, можно кодить. Какие здесь недостатки:
Поэтому ставим миниконду.
Miniconda
Почему мини? Занимает гораздо меньше места (
2Gb), чем старший брат (сестра?) анаконда. Идём сюда, скачиваем потребную версию, устанавливаем. Все настройки по умолчанию. Ну и далее накатываем Jupyter Notebook. Запускаем Anaconda Promt (Miniconda3).
После этого появляется ярлык Jupyter Notebook, запускаем:
Или же можно запустить из промпта миниконды:
Jupyter открывается в браузере, в правом верхнем углу выбираем New-Python3. Открывается новая вкладка, непосредственно ноутбук. Как-то мы привыкли что ноутбук это переносной компьютер, но в оригинале notebook — «блокнот, книга для записей». Поэтому ноутбук, хотя соглашусь, звучит непривычно.
Строка In [ ] (Input) тут как раз ячейка для написания кода программы. Ячейки можно добавлять плюсом. Выбираем нужную ячейку, запускаем. После получаса кода работать с другой средой не хочется категорически. Потому что удобно.
Что ещё.. В Python есть удобный встроенный справочник по элементам языка с помощью функции help().
Установка миниконды подсмотрена в курсе Программирование на Python, который отчаянно рекомендую. Общая часть окончена, далее переходим к сетям.
Установка дополнительных модулей
Стандартные библиотеки Python предоставляют много возможностей (легко ищется в инете, что именно эти библиотеки умеют), но дополнительных библиотек-модулей куда больше. И в работе с сетевым оборудованием дополнительные модули понадобятся обязательно.
К примеру воспользуюсь дополнительным модулем requests, он нужен для отправки запросов на сервера. Открываю консоль конды:
Уже установлено. Это тоже плюс миниконды. Далее накидываю и запускаю программу в ноутбуке:
Как видно не хватает двух модулей. Первый модуль нужен для поддержки консольного порта, второй для работы с файлом Excel, куда забиты реквизиты устройств. Буквально пара движений. Как точно поставить тот или иной модуль ищется в нете:
Заработало, зашуршало, можно отлаживать.
Запуск скриптов
Теперь, допустим, хочу запускать уже готовые к работе файлы скриптов из командной строки. Открываю командную строку, пишу python, Enter.
Вижу что питон у меня ассоциирован с версией 3.7, установленной виндой, как написал в самом начале.
Дополнительные пакеты ставятся отдельно для каждой среды. Тут пока никаких дополнительных пакетов нет, поэтому:
Закидываю текст программы в Notepad++:
Меняю расширение на .py, чтобы запустить командную строку из текущей папки нужно просто набрать cmd-Enter в заголовке пути:
И далее python название программы.
Работает. И как понимаю, ситуация тут распадается на 2 варианта:
Сразу предвижу хороший вопрос: а что с ассоциацией для миниконды? Снова открываем командную строку.
Если нужно работать с миникондой, то команда вводится как py имя скрипта. Таким образом на компе живут несколько питонов и друг-другу не мешают.
Всё, в заключение бомбический курс Python для сетевых инженеров. Программируйте на Python, это клёво 🙂
Компиляция Python
Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её заказчику. И в этот момент возникают вопросы, о которых многие даже не задумываются.
Во-первых, так может оказаться, что вы разработали супер крутой алгоритм, которого ни у кого нет, и показывать его хочется только избранным.
И, наконец, хочется, чтобы конечное приложение работало быстрее, чем в среде разработки.
И вот тут настало время скомпилировать Python-код. Меня зовут Руслан, я старший разработчик компании «Цифровое проектирование». Сегодня я расскажу, как выбрать тот самый компилятор из множества доступных.
AOT/JIT
Компиляция – это сборка программы, включающая: трансляцию всех модулей программы, написанных на языке программирования высокого уровня, в эквивалентные программные модули на низкоуровневом языке, близком к машинному коду, или на машинном языке и сборку исполняемой программы. Существует два вида компиляции:
AOT-компиляция (ahead-of-time) – компиляция перед исполнением программы. Т.е. программа компилируется один раз, в результате компиляции получается исполняемый файл.
Бенчмарк
Так как одной из целей является ускорение, необходимо оценить, насколько быстро работает скомпилированный код. В качестве бенчмарка будем использовать pyperfomance. К сожалению, pyperfomance не подошел для Cython и Pythran, потому что не позволяет визуализировать все возможности языка. Ускорения для Cython без модификации кода получить не удалось, а Pythran не умеет в пользовательские классы. Для них воспользуемся вычислением числа пи:
Эксперименты будем проводить на процессоре Intel Core i7 10510U. На CPython 3.9.7 время вычисления числа пи до 100.000.000 знака заняло 5.82 секунды.
AOT-компиляция Python
PyInstaller
PyInstaller упаковывает приложения Python в автономные исполняемые файлы в Windows, GNU / Linux, Mac OS X, FreeBSD, Solaris и AIX.
Устанавливается через pip:
pip install pyinstaller
После установки для создания исполняемого файла достаточно выполнить команду:
В результате будет создано:
build/ – директория с метаданными для сборки исполняемого файла;
dist/ – директория, содержащая все зависимости и исполняемый файл.
Сборку приложения можно настроить с помощью параметров командной строки:
—name – изменение имени исполняемого файла (по умолчанию, такое же, как у сценария);
—onefile – создание только исполняемого файла (по умолчанию, папка с зависимостями и исполняемый файл);
—hidden-import – перечисление импортов, которые PyInstaller не смог обнаружить автоматически;
—add-data – добавление в сборку файлов данных;
—add-binary – добавление в сборку бинарных файлов;
—exclude-module – исключение модулей из исполняемого файла;
У PyInstaller есть ограничения. Он работает с Python 3.5–3.9. Поддерживает создание исполняемых файлов для разных операционных систем, но не умеет выполнять кросскомпиляцию, т. е. необходимо генерировать исполняемый файл для каждой ОС отдельно. Более того, исполняемый файл зависит от пользовательского glibc, т. е. необходимо генерировать исполняемый файл для самой старой версии каждой ОС.
PyInstaller знает о многих Python-пакетах и умеет их учитывать при сборке исполняемого файла. Но не о всех. Например, фреймворк uvicorn практически весь нужно явно импортировать в файл, к которому будет применена команда pyinstaller. Полный список поддерживаемых из коробки пакетов можно посмотреть здесь.
Cython
Ставится Cython через pip:
pip install Cython
Рассмотрим его работу на примере с вычислением числа пи:
Немного модифицируем нашу функцию:
Cython → C:
Компилируем С-шный код:
И замеряем время на бенчмарке: 3,66 секунды.
А что делать, если в нашем проекте несколько файлов, которые нужно скомпилировать? Тогда нужно использовать так называемый сценарий сборки. С его помощью можно модернизировать сборку в зависимости от операционной системы, указывать несколько файлов, которые необходимо скомпилировать, и многое другое.
Создадим файл build.py:
Запустим: python build.py build_ext –-inplace
В результате будет сгенерирован .so/.dll файл.
Nuitka
Ставится через pip:
pip install nuitka
Для генерации исполняемого файла достаточно выполнить команду:
Для компиляции модуля:
Для компиляции пакета:
Pythran
Pythran – статический компилятор Python, позиционирующий себя как ориентированный на научные вычисления и использующий преимущества многоядерных процессоров и блоков инструкций SIMD. Он транслирует Python-код, аннотированный описаниями интерфейса, в C++. До версии 0.9.5 (включительно) Pythran поддерживал Python 3 и Python 2.7. Последние версии поддерживают только Python 3.
pip install pythran
Генерируем бинарный файл .so:
Pythran по умолчанию не умеет в пользовательские классы, поэтому при попытке их компиляции будет выброшена ошибка:
Top level statements can only be assignments, strings,functions, comments, or imports
Добавим комментарий аннотации функции:
Скомпилируем и бенчмарк выдает 0,00007 секунды.
cx-Freeze
Ставится с помощью pip:
pip install cx_Freeze
Для генерации исполняемого файла достаточно выполнить команду:
Сборку можно настроить с помощью параметров командной строки:
Также возможно использование сценария сборки, например, так:
Сборка исполняемого файла:
python setup.py build
JIT-компиляция Python
JIT-компиляция не позволяет скрывать исходники или создавать автономный исполняемый файл, но дает возможность значительно ускорить выполнение программы.
PyPy
компилятор байт-кода, отвечающий за создание объектов кода Python из исходного кода пользовательского приложения;
оценщик байт-кода, ответственный за интерпретацию объектов кода Python;
стандартное объектное пространство, отвечающее за создание и управление объектами Python, видимыми приложением.
PyPy поддерживает сотни библиотек Python, включая NumPy.
Основные особенности (сравнение с CPython):
Скорость. При выполнении длительно выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python, PyPy может значительно ускорить ваш код.
Использование памяти. Программы Python, требующие много памяти (несколько сотен Мб или более), могут занимать меньше места, чем в CPython. Однако это не всегда так, поскольку зависит от множества деталей. Также базовый уровень потребления оперативной памяти выше, чем у CPython.
Скачать PyPy можно с здесь. После скачивания PyPy готов к запуску после распаковки архива. Если необходимо сделать PyPy доступным для всей системы, достаточно поместить символическую ссылку на исполняемый файл pypy в /usr/local/bin. Также можно поставить с помощью pyenv.
PyPy работает на Mac, Linux (не все дистрибутивы) или Windows.
Для запуска кода с помощью PyPy вместо команды python3 (как c помощью CPython) достаточно воспользоваться командой pypy3:
Pyston
В Pyston поддерживаются все возможности CPython, в том числе C API для разработки расширений на языке Си. Среди основных отличий Pyston от CPython помимо общих оптимизаций выделяется использование DynASM JIT и inline-кэширования.
Заключение
Итак, мы рассмотрели 5 фреймворков AOT-компиляции Python. Для любителей аналитики, ниже приведена таблица со сравнительным анализом.
PyInstaller
Cython
Nuitka
Pythran
cx-Freeze
Генерация автономных исполняемых файлов
Компиляция python-модуля в исполняемый файл, совместимый с CPython
Python precompile standard library что это
Устанавливаем и настраиваем Python в Windows, получаем доступ к интерпретатору из командной строки.
1. Установка Python.
Пролистываем открывшуюся страницу до конца. И выбираем Windows x86-64 executable installer или Windows x86 executable installer в зависимости от вашей версии Windows.
Версию Windows можно посмотреть, щелкнув правой кнопкой мыши на значке Этот компьютер и выбрав Свойства.
После скачивания запускаем инсталлятор. Ставим галочку Add Python to PATH и выбираем Customize installation.
Ставим обязательно галочки:
Install for all users
Associate files with Python
Add Python to environment variables
Precompile standard library
Указываем путь установки в Customize install location и нажимаем Install.
Если появится Disable path length limit, то нажимаем на этот блок.
2. Запускаем интерпретатор из командной строки. Нажимаем на значок пуск.
В открывшемся окне прописываем python, должна появиться информация о версии python и приглашение для ввода.
Стандартная библиотека Python¶
Хотя Справочник по языку Python описывает точный синтаксис и семантику языка Python, в этом справочном руководстве описывается стандартная библиотека, которая распространяется вместе с Python. В нем также описаны некоторые необязательные компоненты, которые обычно включаются в Python дистрибутивы.
Стандартная библиотека Python очень обширна и предлагает широкий спектр возможностей, о чем свидетельствует подробное содержание, приведенное ниже. Библиотека содержит встроенные модули (написанные на языке C), обеспечивающие доступ к таким функциональным возможностям системы, как файловый ввод-вывод, который в противном случае был бы недоступен для Python программистов, а также модули, написанные на языке Python, обеспечивающие стандартные решения многих проблем, возникающих при повседневном программировании. Некоторые из этих модулей специально разработаны для поощрения и повышения переносимости Python программ путем абстракции особенностей платформы в виде нейтрального к платформе API.
Установщики Python для платформы Windows обычно включают всю стандартную библиотеку и часто также включают множество дополнительных компонентов. Для Unix-подобных операционных систем Python обычно предоставляется в виде набора пакетов, поэтому может потребоваться использование пакетных инструментов, поставляемые с операционной системой, для получения некоторых или всех необязательных компонентов.
Помимо стандартной библиотеки, существует растущая коллекция из нескольких тысяч компонентов (от отдельных программ и модулей до пакетов и фреймворков разработки приложений), доступных из Пакетного Индекса Python.
Стандартная библиотека Python3.
Содержание справочника по модулям, поставляемым с интерпретатором Python3.
Представленным здесь модулям, какая либо дополнительная установка не требуется.
Модуль string в Python, текстовые константы и шаблоны.
Многие функции, ранее реализованные в модуле string, были перенесены в методы объектов str. Модуль string сохраняет несколько полезных констант и классов для работы с объектами str.
Модуль textwrap в Python, форматирование абзацев.
Модуль textwrap может использоваться для форматирования текста в ситуациях, когда требуется красивая печать. Он предлагает программную функциональность, аналогичную функциям заполнения абзацев, которые можно найти во многих текстовых редакторах и т
Модуль unicodedata в Python, база данных Unicode.
Этот модуль обеспечивает доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode.
Модуль readline в Python, автодополнение табуляцией.
Модуль readline может быть использован для улучшения интерактивных программ командной строки, чтобы упростить их использование. Он в основном используется для обеспечения завершения текста в командной строке или «завершение табуляцией».
Модуль difflib в Python, сравнение текста.
Модуль difflib содержит классы и функции для сравнения последовательностей. Он может быть использован, для сравнения текста и включает в себя функции, которые создают отчеты с использованием нескольких распространенных форматов, вк
Модуль re в Python, функции регулярных выражений.
Модуль Python re предоставляет операции сопоставления регулярных выражений, аналогичные тем, которые встречаются в Perl. Большинство операций с регулярными выражениями доступны как функции и методы уровня модуля для скомпилированных регулярных выражений.
Модуль codecs в Python, реестр кодеков.
Модуль codecs определяет базовые классы для стандартных кодеков Python (кодеров и декодеров) и предоставляет доступ к внутреннему реестру кодеков Python, который управляет процессом поиска кодека и обработки ошибок.
Модуль io, операции ввода/вывода в Python.
Модуль io предоставляет основные средства Python для работы с различными типами ввода-вывода. Независимо от своей категории каждый конкретный объект потока также будет иметь различные возможности: он может быть доступен только для чтения, только для записи или для чтения и записи.
Модуль sys, параметры конфигурации в Python.
Модуль sys предоставляет переменные и функции, которые позволяют менять конфигурацию интерпретатора во время выполнения, а так же взаимодействовать с операционной системой за пределами выполняемой программы.
Модуль os в Python, доступ к функциям ОС.
Модуль os обеспечивает портативный способ использования функциональных возможностей, зависящих от операционной системы.
Модуль stat в Python, извлечение информации из stat_result.
Модуль stat определяет константы и функции для интерпретации результатов работы функций os.stat() и os.lstat().
Модуль pathlib в Python, операции с путями ОС.
Модуль pathlib по сути объединяет в себе часто используемые функции двух стандартных модулей os и os.path, а так же стандартную функцию open(). Модуль pathlib предлагает классы, представляющие пути файловой системы с семантикой, подходящей для различных операционных систем.
Модуль os.path в Python, операции с путями ОС.
Модуль os.path реализует некоторые полезные функции для манипулирования путями файловой системы. Параметры пути могут быть переданы в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде (Unicode) символьных строк.
Модуль array в Python, массивы числовых значений.
Модуль array определяет тип объекта, который может компактно представлять массив базовых значений: символы, целые числа, числа с плавающей запятой.
Модуль struct, структуры C в Python.
Модуль `struct` включает функции для преобразования между строками байтов и родными типами данных Python, такими как числа и строки. Модуль использует формат строки в качестве компактного описания структур языка `C` и предполагаемого преобразования в/из значений Python.