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. Вот как это сделать:
- Установите PyInstaller с помощью pip:
pip install pyinstaller
- Установите распространяемый пакет Microsoft Visual C++ для Visual Studio 2019. Его можно загрузить с веб-сайта Microsoft.
- Установите пакет SDK для Windows 10. Вы можете загрузить его с веб-сайта Microsoft.
- Откройте командную строку и перейдите в каталог, содержащий вашу программу Python.
- Чтобы скомпилировать однофайловую программу, введите следующую команду:
pyinstaller --onefile hello.py
- Чтобы скомпилировать многофайловую программу, введите следующую команду:
pyinstaller --onefile main.py
Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл.
Компиляция для Linux
Компиляция программ на Python для Linux немного проще, чем для Windows. Вот как это сделать:
- Установите PyInstaller с помощью pip:
pip install pyinstaller
- Откройте терминал и перейдите в каталог, содержащий вашу программу Python.
- Чтобы скомпилировать однофайловую программу, введите следующую команду:
pyinstaller hello.py
- Чтобы скомпилировать многофайловую программу, введите следующую команду:
pyinstaller --onefile main.py
Это создаст новый каталог с именем «dist», содержащий скомпилированный исполняемый файл.
Заключение
Компиляция программ Python в исполняемые файлы может быть полезным способом распространения вашего кода среди тех, у кого на компьютерах может не быть установлен Python. PyInstaller — отличный инструмент для достижения этой цели, он прост в использовании и поддерживает множество функций, таких как сжатие, шифрование и возможность включения файлов данных.
Несмотря на то, что существуют аргументы против компиляции программ на Python, во многих ситуациях такой подход может оказаться полезным. Однако важно иметь в виду, что скомпилированные исполняемые файлы все еще могут быть реконструированы и изменены, поэтому это не надежный способ защитить ваш код.
Кроме того, компиляция программ Python иногда может привести к увеличению размера файлов и увеличению времени запуска по сравнению с запуском программы непосредственно с помощью Python. Это также требует дополнительной настройки и зависимостей, таких как библиотеки, необходимые программе.
В целом, компилировать ли ваши программы Python в исполняемые файлы или нет, зависит от ваших конкретных потребностей и ситуации. Но если вы решите пойти по этому пути, PyInstaller — отличный инструмент, который должен быть в вашем наборе инструментов.
Таким образом, чтобы скомпилировать программу Python в исполняемый файл с помощью PyInstaller:
- Установите PyInstaller с помощью pip.
- Откройте терминал или командную строку и перейдите в каталог, содержащий вашу программу Python.
- Для компиляции однофайловой программы используйте команду «pyinstaller — onefile yourprogram.py». Это создаст один исполняемый файл в новом каталоге «dist».
- Чтобы скомпилировать многофайловую программу с модулями, убедитесь, что все файлы находятся в каталоге с файлом
__init__.py
, чтобы пометить его как пакет, и используйте ту же команду, что и выше.
Для Windows вам также потребуется установить распространяемый пакет Microsoft Visual C++ для Visual Studio 2019 и Windows 10 SDK.
С помощью этих шагов вы теперь сможете скомпилировать свои программы Python в исполняемые файлы как для Windows, так и для Linux. Удачного кодирования!