123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- Nuitka для компиляции grnMatrix.py на Linux. Инструкцию строго по одной строке, чтобы всё было максимально понятно.
- Предполагаю, что у тебя уже установлен Python (версия 3.x) и ты работаешь в терминале.
- Инструкция по компиляции grnMatrix.py с помощью Nuitka на Linux
- Открой терминал. Убедись, что у тебя установлен Python: python3 --version
- Установи компилятор GCC (нужен для Nuitka): sudo apt update
- Установи GCC, если его нет: sudo apt install gcc
- Проверь, что GCC установлен: gcc --version
- Установи менеджер пакетов pip, если его нет: sudo apt install python3-pip
- Проверь версию pip: pip3 --version
- Установи Nuitka через pip: pip3 install nuitka
- Проверь, что Nuitka установлена: nuitka --version
- Перейди в директорию, где лежит твой файл grnMatrix.py (замени /path/to/your/folder на свой путь): cd /path/to/your/folder
- Убедись, что файл grnMatrix.py там: ls grnMatrix.py
- Установи зависимости, если их ещё нет (в твоем случае нужна только curses, которая обычно встроена в Python на Linux):
- pip3 install -r requirements.txt
- (Если у тебя нет requirements.txt, пропусти этот шаг, так как curses стандартная библиотека.)
- Установи patchelf, который требуется для --standalone на Linux: sudo apt install patchelf
- Проверь, что patchelf установлен: patchelf --version
- Запусти компиляцию с Nuitka, создавая автономный исполняемый файл: nuitka --standalone --onefile grnMatrix.py
- Дождись завершения компиляции (это может занять 1-2 минуты, в терминале будут сообщения о процессе).
- Проверь, что файл появился (он будет называться grnMatrix): ls grnMatrix
- Дай файлу права на исполнение: chmod +x grnMatrix
- Запусти скомпилированный файл: ./grnMatrix
- Наблюдай анимацию "Matrix Rain" в терминале!
- Чтобы выйти из программы, нажми q или Q (как указано в коде).
- Ты уже можешь запустить grnMatrix.bin:
- Убедись, что у файла есть права на выполнение: chmod +x grnMatrix.bin
- Запусти: ./grnMatrix.bin
- Если всё работает, а место на диске хочется сэкономить, удали временные папки:
- rm -rf grnMatrix.build grnMatrix.dist grnMatrix.onefile-build
- Теперь у тебя останется только grnMatrix.bin и исходный grnMatrix.py.
- Примечания:
- Флаг --standalone включает все зависимости, а --onefile создает один файл вместо папки.
- Размер файла может быть около 5-15 МБ, что нормально для Nuitka.
- Убедись, что у тебя достаточно места на диске и прав для записи в текущей папке.
- Размер файла: du -h grnMatrix.py 12K
- Размер файла: du -h grnMatrix.bin 5.3M
- Разница в размерах между grnMatrix.py (12K) и grnMatrix.bin (5.3M) объясняется тем, как работает Nuitka и что именно включено в скомпилированный файл.
- Вот почему так происходит:
- grnMatrix.py (12K) Это просто исходный текстовый файл с твоим кодом на Python. Он содержит только сам скрипт — несколько строк логики для анимации "Matrix Rain"
- с использованием библиотеки curses. Его маленький размер — это просто текст без зависимостей или интерпретатора.
- grnMatrix.bin (5.3M) Это полноценный автономный исполняемый файл, созданный Nuitka с опциями --standalone и --onefile. Он включает:
- Скомпилированный код: Твой Python-код переведён в C и скомпилирован в машинный код.
- Интерпретатор Python: Nuitka встраивает части Python (например, стандартную библиотеку), чтобы программа могла работать без установленного Python на компьютере.
- Зависимости: Даже если ты явно используешь только curses (встроенная библиотека), Nuitka включает дополнительные модули Python и системные библиотеки,
- которые могут понадобиться.
- Сжатие: Хотя Nuitka сжимает данные (в твоём случае с 16.8M до 5.3M, как было в логах), итоговый размер всё равно больше исходного кода из-за всего встроенного.
- Почему такая разница?
- Исходный файл — это "рецепт", который требует Python и библиотек на твоей системе для работы.
- Скомпилированный файл — это "готовое блюдо", которое работает само по себе, но для этого в него "упаковали кухню" (интерпретатор и зависимости).
- Это нормально? Да, размер 5-15 МБ для автономного файла от Nuitka — типичное явление, особенно с --standalone.
- Если бы ты убрал эту опцию, размер был бы меньше, но тогда программа зависела бы от установленного Python и библиотек на машине.
- grnMatrixPy>time python3 grnMatrix.py
- real 0m1.773s
- user 0m0.465s
- sys 0m0.050s
- grnMatrixPy>time ./grnMatrix.bin
- real 0m2.430s
- user 0m0.827s
- sys 0m0.143s
- Краткое объяснение
- real: Общее время работы. У grnMatrix.py — 1.773 с, у grnMatrix.bin — 2.430 с. Python быстрее.
- user: Время CPU на код. У .py — 0.465 с, у .bin — 0.827 с. Python меньше нагружает CPU.
- sys: Время на системные вызовы. У .py — 0.050 с, у .bin — 0.143 с. Python меньше использует системные ресурсы.
- Краткий вывод
- grnMatrix.py (с Python) работает быстрее и потребляет меньше ресурсов, чем grnMatrix.bin.
- Скорее всего, из-за простоты скрипта компиляция в бинарник добавляет накладные расходы, которые не окупаются.
- Зачем создали Nuitka и бинарники?
- Автономность: Бинарник работает без Python и зависимостей на любой машине. Не надо ставить интерпретатор или библиотеки — это удобно для распространения софта.
- Защита кода: Исходник .py легко открыть и изменить, а бинарник сложнее разобрать. Это важно для коммерческих проектов.
- Потенциальная скорость: Для сложных программ с вычислениями (не анимаций) скомпилированный код может быть быстрее интерпретируемого Python.
- Nuitka убирает накладные расходы интерпретатора.
- Упаковка: Один файл проще раздавать, чем кучу .py с зависимостями.
- В данном случае бинарник — это как грузовик для перевозки пёрышка: можно, но велосипед (Python) справляется лучше.
- Если цель — просто запустить анимацию, .py хватает за глаза.
|