Разработки проекта PuppyRus > Программирование и компиляция

Pyinstaller , Nuitka - компиляция python скрипта в bin : youtube-dl

(1/3) > >>

sfs:
Т.е. на выходе получаем один бинарник, который работает без python в любом линуксе (если вы специально не выкинули из него системные либы - см. ниже)
Есть версии под python2 (бинарник получается меньше) и python3

Уменьшение размера бинарника :
1. Компилим в папку : pyinstaller -D ваш.py
2. Заходим в dist/ваш и методом исключения убираем лищнее
3. Правим ваш.spec - пример в аттаче
4. Компилим в бинарник pyinstaller -D ваш.py - пример в аттаче
На примере youtube-dl - размер удалось уменьшить почти в 2 раза

Плюсы :
1. Удобно для распространения в разных дистрибах
2. Бинарник работает быстрее, чем скрипт

--- Код ---
# time ./youtube-dl -s https://www.youtube.com/watch?v=aTTx5WsswPM
real 0m3,858s
user 0m2,857s
sys 0m0,186s
root@pra-roll:1# time ./youtube-dl -s https://www.youtube.com/watch?v=aTTx5WsswPM
real 0m2,209s
user 0m1,365s
sys 0m0,080s
--- Конец кода ---

Минусы :
1. Скомпилить получится не все что угодно (или надо очень уметь)
2. Размер может получиться очень большим. Программа с GUI на python3 получается юольше 100мб

Пример:
https://forum.puppyrus.org/index.php?topic=20811.msg172892#msg172892
https://mirror.yandex.ru/puppyrus/roll/pkg/roll/pkg/2008 - pyinstaller и пр. пакеты для prar20.08 на которых можно поэкспериментировать
youtube-dl-bin-p-20.11.21_64-sf01.pfs - оптимизированный бинарник

Другой компилятор Nuitka

sfs:
pyinstaller-4.1-2008-sf01.pfs

krasnyh:

--- Цитата: krasnyh от 09 Ноябрь 2021, 18:12:16 ---
--- Цитата: sfs от 07 Ноябрь 2021, 13:27:53 ---А i686 можете скомпилить?
--- Конец цитаты ---
Я говорил ранее, что желательно добавить pyinstaller в DEVX, и тогда сборка проще простого - подключение devx и клик по скрипту.



--- Цитата: sfs от 04 Ноябрь 2021, 12:45:02 ---Поменьше его не сделать?
--- Конец цитаты ---
1. exclude_system_libraries
Уменьшится где-то на 3 mb.
2. PYTHONOPTIMIZE=2 pyinstaller myscript.py
Еще уменьшение примерно на 0.5 MB.

--- Конец цитаты ---

В шапке темы прикреплен образец youtube-dl.spec.gz. Сборка командой pyinstaller yt-dlp.spec.



--- Цитата: krasnyh от 20 Ноябрь 2020, 18:27:57 ---Pyinstaller при сборке создает youtube-dl.spec, где можно настроить исключения, если знать что именно и тем самым уменьшить размер конечного youtube-dl.

Т.е. сначала создаем pyi-makespec --onefile __main__.py --name youtube-dl, редактируем *.spec и собираем pyinstaller youtube-dl.spec.
Ссылка.

--- Конец цитаты ---

sfs:
Я правильно понял - под питон2 он не работает?

krasnyh:

--- Цитата ---DEPENDENCIES

Python versions 3.6+ (CPython and PyPy) are supported. Other versions and implementations may or may not work correctly.
--- Конец цитаты ---
https://github.com/yt-dlp/yt-dlp#dependencies


Можно взять старый питон, позволит еще чуть уменьшить размер.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии