Python — это интерпретируемый язык, который легко писать, читать и понимать. Однако иногда вам может понадобиться распространять вашу программу Python в виде исполняемого файла, особенно если вы создаете приложение или делитесь своим кодом с другими, на компьютерах которых не установлен Python. В этом сообщении блога мы обсудим, как скомпилировать файлы Python в исполняемые файлы для Windows и Linux, в том числе лучший способ выполнить эту компиляцию и некоторые аргументы против компиляции программ Python.

Компиляция программ Python

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

Одним из самых популярных инструментов для компиляции программ Python является PyInstaller. PyInstaller – это программа, которую можно использовать для упаковки программ Python в виде отдельных исполняемых файлов для Windows, macOS и Linux. . Он прост в использовании и поддерживает множество функций, таких как сжатие, шифрование и возможность включения файлов данных.

Еще одним популярным инструментом является cx_Freeze, который похож на PyInstaller, но в основном ориентирован на создание Windows исполняемых файлов. Он также поддерживает создание исполняемых файлов для Linux и macOS, но для этих платформ может потребоваться дополнительная настройка.

Аргументы против компиляции программ на Python

Хотя у компиляции программ на Python есть много преимуществ, есть и аргументы против этого. Один из аргументов заключается в том, что компиляция программ на Python идет вразрез с «питоновским» способом ведения дел. Python делает упор на удобочитаемость, простоту и гибкость, а компиляция программы в исполняемый файл идет вразрез с этими принципами. Другой аргумент заключается в том, что компиляция программ на Python может усложнить отладку и сопровождение кода. Когда программа Python компилируется, она больше не находится в своей первоначальной форме, что может затруднить отладку, если что-то пойдет не так. Наконец, некоторые утверждают, что в компиляции программ Python нет необходимости, потому что Python и так достаточно быстр, и есть другие способы оптимизировать производительность, такие как использование лучших алгоритмов или кэширование результатов.

Несмотря на эти аргументы, все еще существует много случаев, когда компиляция программ Python в исполняемые файлы необходима или желательна.

Компиляция программ на Python с помощью PyInstaller

Теперь, когда мы обсудили некоторые аргументы за и против компиляции программ Python, давайте углубимся в то, как компилировать файлы Python в исполняемые файлы для Windows и Linux с помощью PyInstaller.

Установка PyInstaller

Первый шаг — установить PyInstaller. PyInstaller можно установить с помощью pip, который является установщиком пакетов для Python. Откройте терминал или командную строку и введите следующую команду:

pip install pyinstaller

Это загрузит и установит последнюю версию PyInstaller и все ее зависимости.

Компиляция однофайловой программы

Начнем с компиляции простой программы «Hello World», состоящей из одного файла Python. Создайте новый файл с именем «hello.py» и добавьте следующий код:

print("Hello, world!")

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

pyinstaller hello.py

Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл. Имя исполняемого файла будет таким же, как имя файла Python (в данном случае «hello»).

Чтобы запустить исполняемый файл, перейдите в каталог «dist» и запустите исполняемый файл. В Windows файл будет иметь расширение «.exe», а в Linux у него не будет расширения. Введите следующую команду для запуска исполняемого файла:

./hello

Это должно отобразить сообщение «Hello, world!» в терминале.

Компиляция многофайловой программы с модулями

Теперь давайте попробуем скомпилировать более сложную программу, состоящую из нескольких файлов и модулей Python. Создайте новый каталог с именем «myprogram» и создайте в нем следующие файлы:

myprogram/
├── __init__.py
├── main.py
└── utils.py

Файл __init__.py необходим, чтобы пометить каталог как пакет Python, а файл main.py содержит основной код программы. Файл utils.py содержит некоторые вспомогательные функции, которые будут импортированы в файл main.py.

Вот код для каждого из этих файлов:

init.py

# This file is required to mark the directory as a Python package

utils.py

def square(x):
    return x ** 2

main.py

from utils import square
print(square(5))

Сохраните файлы и откройте терминал или командную строку в каталоге «myprogram». Чтобы скомпилировать программу в исполняемый файл, введите следующую команду:

pyinstaller --onefile main.py

Параметр --onefile указывает PyInstaller создать один исполняемый файл вместо каталога с несколькими файлами.

Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл. Имя исполняемого файла будет таким же, как имя файла Python (в данном случае «main»).

Чтобы запустить исполняемый файл, перейдите в каталог «dist» и запустите исполняемый файл. В Windows файл будет иметь расширение «.exe», а в Linux у него не будет расширения. Введите следующую команду для запуска исполняемого файла:

./main

Это должно отобразить в терминале число 25, которое является результатом вызова функции square с аргументом 5.

Компиляция для Windows

Компиляция программ Python для Windows требует несколько иной настройки, чем компиляция для Linux. Вот как это сделать:

  1. Установите PyInstaller с помощью pip:
pip install pyinstaller
  1. Установите распространяемый пакет Microsoft Visual C++ для Visual Studio 2019. Его можно загрузить с веб-сайта Microsoft.
  2. Установите пакет SDK для Windows 10. Вы можете загрузить его с веб-сайта Microsoft.
  3. Откройте командную строку и перейдите в каталог, содержащий вашу программу Python.
  4. Чтобы скомпилировать однофайловую программу, введите следующую команду:
pyinstaller --onefile hello.py
  1. Чтобы скомпилировать многофайловую программу, введите следующую команду:
pyinstaller --onefile main.py

Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл.

Компиляция для Linux

Компиляция программ на Python для Linux немного проще, чем для Windows. Вот как это сделать:

  1. Установите PyInstaller с помощью pip:
pip install pyinstaller
  1. Откройте терминал и перейдите в каталог, содержащий вашу программу Python.
  2. Чтобы скомпилировать однофайловую программу, введите следующую команду:
pyinstaller hello.py
  1. Чтобы скомпилировать многофайловую программу, введите следующую команду:
pyinstaller --onefile main.py

Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл.

Заключение

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

Несмотря на то, что существуют аргументы против компиляции программ на Python, во многих ситуациях такой подход может оказаться полезным. Однако важно иметь в виду, что скомпилированные исполняемые файлы все еще могут быть реконструированы и изменены, поэтому это не надежный способ защитить ваш код.

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

В целом, компилировать ли ваши программы Python в исполняемые файлы или нет, зависит от ваших конкретных потребностей и ситуации. Но если вы решите пойти по этому пути, PyInstaller — отличный инструмент, который должен быть в вашем наборе инструментов.

Таким образом, чтобы скомпилировать программу Python в исполняемый файл с помощью PyInstaller:

  1. Установите PyInstaller с помощью pip.
  2. Откройте терминал или командную строку и перейдите в каталог, содержащий вашу программу Python.
  3. Для компиляции однофайловой программы используйте команду «pyinstaller — onefile yourprogram.py». Это создаст один исполняемый файл в новом каталоге «dist».
  4. Чтобы скомпилировать многофайловую программу с модулями, убедитесь, что все файлы находятся в каталоге с файлом __init__.py, чтобы пометить его как пакет, и используйте ту же команду, что и выше.

Для Windows вам также потребуется установить распространяемый пакет Microsoft Visual C++ для Visual Studio 2019 и Windows 10 SDK.

С помощью этих шагов вы теперь сможете скомпилировать свои программы Python в исполняемые файлы как для Windows, так и для Linux. Удачного кодирования!