Codeby
36.3K subscribers
2.01K photos
96 videos
12 files
7.79K links
Блог сообщества Кодебай

Чат: @codeby_one
Форум: codeby.net
Обучение: codeby.academy

CTF: hackerlab.pro

VK: vk.com/codeby
YT: clck.ru/XG99c

Сотрудничество: @KinWiz

Реклама: @Savchenkova_Valentina
Download Telegram
Nuitka: Компилятор Python в исполняемые файлы
Nuitka — это компилятор, транслирующий Python-код в C, а затем создающий исполняемый файл или модуль расширения. Инструмент написан на Python и обеспечивает полную совместимость с CPython, поддерживая практически все конструкции языка от Python 2.6 до 3.14. Основное назначение Nuitka — создание автономных приложений, ускорение выполнения кода и распространение программ без зависимости от интерпретатора.


👉Ключевые особенности
- Поддерживает Python 2.6–2.7 и 3.4–3.14
- Различные режимы компиляции: ускоренный (accelerated), автономный (standalone), однофайловый (onefile), модуль (module), пакет (package)
- Работает на Windows, Linux, macOS, FreeBSD
- Автоматическое управление зависимостями (включает необходимые модули и библиотеки)
- Поддержка упаковки данных (включение файлов ресурсов, DLL, метаданных)
- Интеграция с внешними компиляторами (MSVC, MinGW64, gcc, clang, zig)

⬇️Установка
pip install nuitka

Проверка
nuitka -h


⏺️Компиляция в ускоренном режиме (по умолчанию)
nuitka script.py

Создает исполняемый файл script.exe (Windows) или script.bin (Linux/macOS).

⏺️Создание автономной папки (standalone)
nuitka --mode=standalone --follow-imports script.py

Создает директорию script.dist с исполняемым файлом и всеми необходимыми библиотеками.

⏺️Создание однофайлового исполняемого файла
nuitka --mode=onefile --follow-imports script.py

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

⏺️Компиляция модуля расширения
nuitka --mode=module some_module.py

Создает some_module.so (Unix) или some_module.pyd (Windows).

⏺️Управление включением модулей
#включение конкретного модуля
nuitka --include-module=requests script.py

#включение всего пакета
nuitka --include-package=PyQt6 script.py

#исключение модулей
nuitka --nofollow-import-to=*.tests script.py


⏺️Работа с данными и ресурсами
#включение файлов данных пакета
nuitka --include-package-data=package_name script.py

#включение конкретных файлов
nuitka --include-data-files=/path/to/config.json=config.json script.py

#включение целой директории
nuitka --include-data-dir=./data=data script.py


⏺️Базовая компиляция с зависимостями
nuitka --mode=standalone --follow-imports --output-dir=./dist myapp.py


⏺️Компиляция веб-приложения Flask
nuitka --mode=onefile \
--follow-imports \
--include-package-data=flask \
--include-package-data=jinja2 \
--include-data-dir=./templates=templates \
--include-data-dir=./static=static \
app.py


⏺️Компиляция GUI-приложения на PyQt
nuitka --mode=standalone \
--follow-imports \
--include-package=PyQt6 \
--windows-icon-from-ico=icon.ico \
--windows-disable-console \
main.py


⏺️Компиляция с расширенной информацией для отладки
nuitka --mode=standalone \
--follow-imports \
--verbose \
--report=report.xml \
--show-modules \
script.py


⏺️Оптимизация с профилированием (PGO)
nuitka --mode=standalone \
--follow-imports \
--pgo \
--pgo-args="--test-option" \
script.py


⏺️Компиляция с использованием zig компилятора
nuitka --mode=standalone --zig --follow-imports script.py


⏺️Создание детального отчета
nuitka --mode=standalone --follow-imports --report=build_report.xml script.py


🎇Ограничения и требования
- Для Python 3.4 требуется дополнительный Python 2 или 3.5+ для SCons
- На Windows MinGW64 не работает с Python 3.13+
- Автономные сборки требуют копирования всей директории .dist
- Однофайловые сборки распаковываются во временную директорию при запуске

#Nuitka #Python #tool #CPython

🔗 Все наши каналы 🔁 Все наши чаты 🪧 Для связи с менеджером
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7🔥3