Python compiler module windows

Функция compile() компилирует блок кода Python.

Позволяет скомпилировать блок кода для выполнения в exec().

Синтаксис:

Параметры:

  • source — обязательный параметр. Может быть обычной строкой, байтовой строкой, либо объектом абстрактного синтаксического дерева.
  • filename — обязательный параметр. Имя файла, из которого будет читается код. Если код не будет считан из файла, вы можете написать в качестве параметра любую строку .
  • mode — обязательный параметр. Может принимать 3 значения:
    • eval , если источником является одно выражение;
    • exec ,если источником является блок операторов;
    • single , если код состоит из одного оператора;
  • flag — необязательный параметр. По умолчанию flags=0 и определяет, будет ли скомпилированный код содержать асинхронные операции или какие инструкции из __future__ следует использовать. Указывается битами. Если нужно задать несколько инструкций, то их можно указывать через or ;
  • dont_inherit — необязательный параметр. По умолчанию dont_inherit=False . Указывает, следует ли использовать future определенные в коде, в дополнение в тем, что указаны во flags;
  • optimize — необязательный параметр. По умолчанию optimize=-1 .
    Задаёт уровень оптимизации компилятора:
    • -1 — использовать настройки интерпретатора (регулируются опцией -O);
    • 0 — не оптимизировать, включить debug;
    • 1 — убрать инструкции asserts, выключить debug;
    • 2 — то, что делает 1 + убрать строки документации.

Возвращаемое значение:

  • объекта кода, готовый к выполнению.

Описание:

Функция compile() возвращает переданный, в качестве аргумента источник, в виде объекта кода, готового к выполнению. Объекты кода, полученные в результате выполнения функции compile() могут быть выполнены с помощью exec() или eval() .

Функция compile() бросает исключение SyntaxError , если скомпилированный источник недопустим и ValueErrorесли , если источник содержит нулевые байты.

Заметка:
При компиляции строки с многострочным кодом в режиме single или eval , ввод должен заканчиваться хотя бы одним символом новой строки ‘\n’ . Это должно облегчить обнаружение неполных и полных операторов в модуле code .

Предупреждение:
При компиляции в объект AST(абстрактного синтаксического дерева) возможен сбой интерпретатора Python с большой(сложной) строкой из-за ограничений глубины стека в компиляторе AST Python.

Изменено в Python 3.5: Ранее TypeError вызывалось, когда в источнике встречались нулевые байты.

Как скомпилировать Python код в .exe

Как скомпилировать Python код в .exe | немного теории

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

Хочется отметить, что для меня Python является одним из самых интересных, мощных языков программирования. С ним я познакомился примерно в 2016 году и только спустя год осознал всю его мощь и красоту.

Многие задаются вопросом, когда написали программу на Python: “А как его скомпилировать в .exe файл?”. Вопрос довольно сложный, для того, кто только открыл для себя этот язык и ещё не сталкивался с pip.

Читайте также:  Recordpad для windows 10

pip – система управления пакетами, которая используется для установки и управления программными пакетами, которые написаны на Python. Если кратко, то pip – это файловый менеджер языка Python.

pyinstaller – программа, которая собирает все зависимости и python-приложение в один пакет и превращает его в исполняемый файл для Windows, Linux, MacOS.

Как скомпилировать Python код в .exe | практикум

Для начала, нам нужно установить pyinstaller с помощью pip. Пишем команду в командной строке:

Если вы используете Linux и у вас не установлен pip, то просто напишите команду:

На Windows, если вы не изменяли конфигурации установки Python, проблемы отсутствия pip у вас возникнуть не должно.

Вторым шагом будет переход в директорию с нашим проектом. Просто копируем путь и с помощью команды cd (наш путь) переходим в директорию, для Linux и Windows команда одинаковая.

Теперь давайте скомпилируем наш Python код в .exe, не будем тянуть.

Сделаем мы это с помощью установленного пакета pyinstaller.

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

  • -F – этот флаг отвечает за то, чтобы в созданной папке dist, в которой и будет храниться наш исполняемый файл не было очень много лишних файлов, модулей и т.п.
  • -w – этот флаг вам понадобится в том случае, если приложение использует tkinekt, оно блокирует создание консольного окна, если же ваше приложение консольное, вам этот флаг использовать не нужно.
  • -i – этот флаг отвечает за установку иконки на наш исполняемый файл, после флага нужно указать полный путь к иконке с указанием её имени. Например: D:\LayOut\icon.ico

Вот и всё, сегодня мы рассмотрели, как скомпилировать Python код в .exe, Если у вас остались какие-либо вопросы, пишите их в комментарии, с удовольствием отвечу.

Так же подписывайтесь на обновления сайта, тут будет ещё много интересного!

Как создать exe файл для Python кода с помощью PyInstaller

Установка PyInstaller

Установка PyInstaller не отличается от установки любой другой библиотеки Python.

Вот так можно проверить версию PyInstaller.

Я использую PyInstaller версии 4.2.

Создание exe файла с помощью PyInstaller

PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:

  1. Считывает файл скрипта.
  2. Анализирует код для выявления всех зависимостей, необходимых для работы.
  3. Создает файл spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
  4. Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
  5. Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
  6. Создает папку DIST в папке со скриптом, если она еще не существует.
  7. Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.

Если использовать параметр команды onedir или -D при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр onefile или -F , то все окажется в одном исполняемом файле.

Читайте также:  Qualcomm atheros firmware kali linux

Возьмем в качестве примера простейший скрипт на Python c названием simple.py, который содержит такой код.

Создадим один исполняемый файл. В командной строке введите:

После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.

Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.

Вот что произойдет после запуска файла.

Добавление файлов с данными, которые будут использоваться exe-файлом

Есть CSV-файл netflix_titles.csv, и Python-script, который считывает количество записей в нем. Теперь нужно добавить этот файл в бандл с исполняемым файлом. Файл Python-скрипта назовем просто simple1.py.

Создадим исполняемый файл с данными в папке.

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

Можно увидеть, что файл теперь добавляется в папку DIST вместе с исполняемым файлом.

Также, открыв spec-файл, можно увидеть раздел datas, в котором указывается, что файл netflix_titles.csv копируется в текущую директорию.

Запустим файл simple1.exe, появится консоль с выводом: Всего фильмов: 7787 .

Добавление файлов с данными и параметр onefile

Если задать параметр —onefile , то PyInstaller распаковывает все файлы в папку TEMP, выполняет скрипт и удаляет TEMP. Если вместе с add-data указать onefile, то нужно считать данные из папки. Путь папки меняется и похож на «_MEIxxxxxx-folder».

Скрипт обновлен для чтения папки TEMP и файлов с данными. Создадим exe-файл с помощью onefile и add-data.

После успешного создания файл simple1.exe появится в папке DIST.

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

Дополнительные импорты с помощью Hidden Imports

Исполняемому файлу требуются все импорты, которые нужны Python-скрипту. Иногда PyInstaller может пропустить динамические импорты или импорты второго уровня, возвращая ошибку ImportError: No module named …

Для решения этой ошибки нужно передать название недостающей библиотеки в hidden-import.

Например, чтобы добавить библиотеку os, нужно написать вот так:

Файл spec

Файл spec — это первый файл, который PyInstaller создает, чтобы закодировать содержимое скрипта Python вместе с параметрами, переданными при запуске.

PyInstaller считывает содержимое файла для создания исполняемого файла, определяя все, что может понадобиться для него.

Файл с расширением .spec сохраняется по умолчанию в текущей директории.

Если у вас есть какое-либо из нижеперечисленных требований, то вы можете изменить файл спецификации:

  • Собрать в один бандл с исполняемым файлы данных.
  • Включить другие исполняемые файлы: .dll или .so.
  • С помощью библиотек собрать в один бандл несколько программы.

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

Компилируем модель с помощью PyInstaller:

После успешной компиляции запускаем исполняемый файл, который возвращает следующую ошибку.

Исправим ее, обновив файл spec. Одно из решений — создать файл spec.

Команда pyi-makespec создает spec-файл по умолчанию, содержащий все параметры, которые можно указать в командной строке. Файл simpleModel.spec создается в текущей директории.

Читайте также:  Команда для просмотра служб windows

Поскольку был использован параметр —onefile , то внутри файла будет только раздел exe.

Если использовать параметр по умолчанию или onedir, то вместе с exe-разделом будет также и раздел collect.

Можно открыть simpleModel.spec и добавить следующий текст для создания хуков.

Создаем хуки и добавляем их в hidden imports и раздел данных.

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

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

Скомпилируем модель после обновления файла simpleModel.spec.

Скопируем исполняемый файл на рабочий стол и увидим, что теперь он корректно отображает версию TensorFlow.

Вывод:

PyInstaller предлагает несколько вариантов создания простых и сложных исполняемых файлов из Python-скриптов:

  • Исполняемый файл может собрать в один бандл все требуемые данные с помощью параметра —add-data .
  • Исполняемый файл и зависимые данные с библиотеками можно собрать в один файл или папку с помощью —onefile или —onedir соответственно.
  • Динамические импорты и библиотеки второго уровня можно включить с помощью hidden-imports .
  • Файл spec позволяет создать исполняемый файл для обработки скрытых импортов и других файлов данных с помощью хуков.

Подписывайтесь на канал в Дзене

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

Python // Компиляция скриптов в .exe файл

Python // Компиляция скриптов в .exe файл

Чтобы перенести программу на другой компьютер, где не установлен Python, её нужно скомпилировать в .exe файл. Для этого есть несколько способов, и сегодня мы рассмотрим наиболее простой — библиотеку pyinstaller

Дадим в командной строке две команды:

pip install wheel
pip install pyinstaller

После установки всего необходимого, попробуем скомпилировать какую-нибудь программу. Я выбрал в качестве примера свой скрипт, который позволяет разархивировать zip файлы в определенную директорию. Он уже имеется у меня в качестве .py файла.

Итак, мы имеем .py файл под названием downblog.py, который успешно запускается и работает в качестве скрипта Python. И теперь мы хотим сделать из него .exe файл, чтобы мы могли просто дать его другу, и не заморачиваться с установкой питона и модулей на другом компе.

Создадим на диске D:\ какую-нибудь папку с простым именем. Я например создал папку с именем «1».

Поместим в эту папку скрипт, который мы хотим скомпилировать — downblog.py

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

pyinstaller —onedir —onefile —name=downblog «D:\1\downblog.py»

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

В подкаталоге dist лежит скомпилированный exe файл.

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

Оцените статью