Как код скомпилировать в программу python

Привет, Мир, Вы когда-нибудь восхищались тем, что такое язык Python? Python компилируется, интерпретируется или и то, и другое? Давайте поближе разберемся в этом и почему……..

Python Компилируется, интерпретируется или И то, и Другое?

Распространенный вопрос: “Компилируется ли Python, интерпретируется или и то, и другое?”.

Типы языков программирования

Любой высокоуровневый язык программирования преобразуется в машинный язык двумя способами:

  1. Компиляторы
  2. Переводчики

Компиляторы:

Преобразуйте высокоуровневую программу в ее машинные или процессорные наборы команд, то есть машинный байт-код. Поэтому компилятор сначала проверяет свой синтаксис и преобразует всю программу в машинный или процессорный байт-код.

компилируемый язык – это язык программирования, реализации которого обычно href=”https://en.wikipedia.org/wiki/Compiler”>компиляторы (переводчики, генерирующие машинный код из href=”https://en.wikipedia.org/wiki/Source_code”>исходный код). И href=”https://en.wikipedia.org/wiki/Interpreter_(computing)”>интерпретаторы являются пошаговыми исполнителями исходного кода, где не происходит предварительного перевода во время выполнения. href=”https://en.wikipedia.org/wiki/Compiler”>компиляторы (переводчики, генерирующие машинный код из href=”https://en.wikipedia.org/wiki/Source_code”>исходный код). И href=”https://en.wikipedia.org/wiki/Interpreter_(computing)”>интерпретаторы являются пошаговыми исполнителями исходного кода, где не происходит предварительного перевода во время выполнения. href=”https://en.wikipedia.org/wiki/Source_code”>исходный код). И href=”https://en.wikipedia.org/wiki/Interpreter_(computing)”>интерпретаторы являются пошаговыми исполнителями исходного кода, где не происходит предварительного перевода во время выполнения. href=”https://en.wikipedia.org/wiki/Interpreter_(computing)”>интерпретаторы являются пошаговыми исполнителями исходного кода, где не происходит предварительного перевода во время выполнения.

Как скомпилировать Python в мобильное приложение

Например: c, c++, Java

Переводчики:

Интерпретаторы работают по-разному: они берут каждое выражение или строку программы, преобразуют их в машинный код и выполняют. Следовательно, если в определенной строке есть ошибка, она будет показана во время выполнения.

Интерпретируемый язык – это тип языка программирования, для которого большинство его реализаций выполняют инструкции непосредственно и свободно. Без предварительной компиляции программы в инструкции машинного языка. href=”https://en.wikipedia.org/wiki/Interpreter_ интерпретатор теперь выполняет программу, переводя каждое утверждение в последовательность одной или нескольких подпрограмм, а затем на другой язык (часто машинный код). href=”https://en.wikipedia.org/wiki/Interpreter_ интерпретатор теперь выполняет программу, переводя каждое утверждение в последовательность одной или нескольких подпрограмм, а затем на другой язык (часто машинный код).

Читайте также:
Какая программа открывает ртф

Компиляция Python в EXE? | Nuitka, Pyinstaller, InnoSetup

Пример: оболочка Unix

Интерпретируется ли Python?

Это немного странно с точки зрения компиляции, приходя к Python, запомните это слово.

Python-это “СКОМПИЛИРОВАННЫЙ ИНТЕРПРЕТИРУЕМЫЙ” язык.

Это означает, что при запуске программы Python,

  1. Сначала Python проверяет синтаксис программы
  2. Компилирует и преобразует его в байт-код, а непосредственно байт-код загружается в системную память.
  3. Затем скомпилированный байт-код интерпретируется из памяти для его выполнения.

В то время как другие языки, такие как c, преобразуют программы в машинный код и сохраняют их как исполняемые файлы на диске. И тогда пользователь может запустить его как.out

Компиляция на Python кода Python

Возможно ли из программы Python компилирования кода на том же Python? То есть, предположим, что программа откуда-то получила код (например, считала из файла). Можно ли как-то изнутри программы скомпилировать этот код?

Отслеживать
11.5k 8 8 золотых знаков 42 42 серебряных знака 69 69 бронзовых знаков
задан 25 дек 2012 в 1:25
Егор Беликов Егор Беликов
61 8 8 бронзовых знаков
Т.е. из .py сделать .pyc? А кто мешает?

25 дек 2012 в 1:31

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Если нужен запуск плученного в виде текста Python кода то eval

Отслеживать
ответ дан 25 дек 2012 в 5:38
3,018 12 12 серебряных знаков 14 14 бронзовых знаков
Только помните, что это небезопасно, если исходный код приходит извне.
25 дек 2012 в 14:28
Мда, незначительная такая оговорочка: «помните, что это небезопасно». )))

7 июн 2020 в 14:02

Чтобы скомпилировать Питон код в байт-код, не запуская его на выполнение, можно использовать compile() для кода в строке, py_compile для модуля в файле, compileall для дерева директорий с кодом.

Скомпилированный код можно отдать на выполнение в exec(), eval() функции. Скомпилированные .pyc / .pyo файлы могут быть выполнены напрямую python командой.

# Don’t blink! This is where the user’s code gets run. exec(compile(example.source, filename, «single», compileflags, 1), test.globs)

Как правило компилировать вручную нет необходимости: exec() , eval() , python также принимают Питон код напрямую.

Чтобы создать AST представление кода, можно использовать ast.parse() , что может быть полезно, к примеру, для вычисления простых арифметических выражений.

Читайте также:
Программа для настройки джойстика на компьютере

Источник: ru.stackoverflow.com

Взаимодействие с кодом Python

Язык программирования Python обладает большими возможностями, имеет богатый функционал и библиотеки, написание которых на языке Си может занять продолжительное время, особенно это касается сферы машинного обучения. И было бы неплохо просто взять готовую функциональность на Python и инкорпорировать в программу на C. И Python позволяет это сделать, предоставляя такую функциональность, как Embedded Python (встраиваемый Python). То есть мы можем встроить в программу на C интерпретатор Python и выполнять в программе на C код на языке Python. Рассмотрим, как это сделать.

Настройка и компиляция на Windows

Для работы на ОС Windows прежде всего нам нужно узнать путь к установленному интерпретатору Python. Например, в моем случае это путь C:UserseugenAppDataLocalProgramsPythonPython311 . Для упрощения работу установим в переменных среды переменную PYTHONHOME . Она должна указывать на путь к каталогу, где учстановлен Python. Эта переменная будет использоваться для поиска нужных библиотек:

Настройка PYTHONHOME для Embedded Python

Определим файл app.c со следующей программой на языке C:

#include int main()

Прежде всего, чтобы встроить Python в программу, подключаем заголовочный файл Python.h . Этот файл устанавливается вместе с другими файлами интерпретатора Python по умолчанию. Мы его можем найти в папке интерпретатора Python в каталоге include

Python.h в программе на языке C

В программе сначала вызываем функцию Py_Initialize() . Эта функция инициализирует интерпретатор Python, таблицу модулей и устанавливает путь к модулям.

Чтобы выполнить некоторый код Python, применяется функция PyRun_SimpleString() , в которую передается код Python

PyRun_SimpleString(«print(‘Hello METANIT.COM’)»);

Здесь код Python представляет вывод строки на консоль с помощью функции print()

После выполнения кода Python вызываем функцию Py_Finalize() , которая освобождает память, выделенную для интерпретатора Python.

Для компиляции в Windows используем компилятор gcc . Выполним команду

gcc -Wall -I %PYTHONHOME%include -L %PYTHONHOME%libs -o app.exe app.c -lpython311 gcc -Wall -I %PYTHONHOME%include -L %PYTHONHOME%libs -o app app.c -lpython311

При этом в программе могут быть и другие инструкции на языке C:

#include #include int main()

Компиляция на Linux

Компиляция на Linux несколько отличается. Для компиляции на Ubuntu применяется следующая команда:

gcc -Wall $(python3-config —cflags) -o app app.c $(python3-config —embed —ldflags)

Читайте также:
Как установить программу фотошоп на ноутбук

Использование библиотек Python

Подобным образом можно использовать более сложный код Python. В том числе с использованием сторонних библиотек Python. Например, нарисуем произвольный график с помощью библиотек numpy и matplotlib . Соответственно нам надо вначале установить данные библиотеки с помощью пакетного менеджера pip:

pip install numpy pip install matplotlib

Для создания графика определим на С следующую программу:

#include int main()

В данном случае сначала подключаем функционал библиотек numpy и matplotlib .

import numpy as np import matplotlib.pyplot as plt

Далее генерируем значения, которые отображаются по оси X:

x = np.array(range(0, 8))

Для генерации применяется функция np.array() библиотеки Numpy, которая создает набор чисел от 0 до 7.

Далее по значениям X получаем значения Y по определенной формуле. Здесь мы рисуем график функции y = 2x + 1 . И для вычисления значений Y применяем встроенную функцию eval() , которая есть в языке Python и которая вычисляет произвольное выражение.

y = eval(‘2 * x + 1’)

Затем устанавливаем заголовок графика

plt.title(‘y = 2x + 1’)

Устанавливаем текстовые метки для осей X и Y:

plt.xlabel(‘x’) plt.ylabel(‘y’)

И в конце отрисовываем график и отображаем его на экране:

plt.plot(x,y) plt.show()

Применение модулей Python в программе на языке C

Выполнение файла с кодом Python

Если инструкций на Python много, то их проще определить в отдельный файл. Затем в программе на языке С этот файл можно выполнить с помощью функции PyRun_SimpleFile() , которая имеет следующее определение:

int PyRun_SimpleFile(FILE *fp, const char *filename)

В качестве первого параметра передается дескриптор файла, а в качестве второго — имя файла.

Например, определим в одной папке с программой файл main.py со следующим кодом на языке Python:

print(«Hello Python in C»)

Здесь код просто выводит строку на консоль.

В главном файле программы на C (допустим, он называется app.c ) выполним этот скрипт Python:

#include int main() < char filename[] = «main.py»; Py_Initialize(); FILE* fp = fopen(filename, «rb»); // открываем файл и if(fp) PyRun_SimpleFile(fp, filename); // выполняем программу python Py_Finalize(); return 0; >

Здесь сначала открываем файл в бинарном режиме для чтения и получаем указатель на файл с помощью функции fopen() , затем выполняем файл с кодом Python. В итоге консоль должна вывести

Источник: metanit.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru