Форум сайта python.su
Не я первый не я последний кто задаёт этот вопрос, но компелировать py. Пока я искал, 3 раза нарвался на вирусы которые блокировали комп или спамили рекламой. Подскажите что лучше использовать и где искать.
Офлайн
https://pypi.python.org/pypi/py2exe/
Но будет лучше, если вы для себя поймете, что это не нужно.
Офлайн
Давайте все же определимся, скомпилировать или просто сделать исполняемый файл..
py2exe, cxFreeze, pyInstaller - по сути не компилируют, а просто собирают этакий самораспаковывающийся потрабельный пайтон с вашим скриптом.
Из всех трех я пробовал cxFreeze, и pyInstaller, чисто субьективно мне больше понавился последний.
cxFreeze уж больно много всего ненужного тянет с собой. Для сравнения екзешник упакованый cxFreeze зaнимал 50\150 MB в упакованом\распакованом состоянии, pyInstaller -ом 15\38. Потому как первый упаковал туда весь pyQt а второй взял из pyQt только десятток ДЛЛ-ек и пяток pyd -файлов.
МБ если cxFreeze както настроить, подобавляв вских инклудов и екслудов, оно и уменшит итоговый размер, но pyInstaller это делает из коробки без танцев с бубном.
Есть еще Nuitka достаточно многообещающий проэкт. Она переводит Python в программу С++, которая потом использует “libpython” для выполнения.. она именно компилирует.
Если опустить разные мелочи то то у Nuitka один существенный недостаток. Она какимто образом цеполяет pythonXX.dll так, что другие приложения использующие python вынуждены использовать туже версию.
Когда скомпилированый нуиткой екзешник с использованием python35.dll работал, то я не смог паралельно запустить pyScripter который на тот момент работал с python 3.4 , ругалось что не та версия python. При этом когда екзешник завершал работу pyScripter отлично запускался. С чем это связанои как победить особо разбираться не стал, так это было исключительно ради “на посмотреть” что за зверь такой Nuitka. С собранными cxFreeze/pyInstaller-ом таких коясков не наблюдалось без проблем одновременно работали приложения использующие разные версии пайтона.
Но в любом случае будте готовы что при компиляции у вас могут полезть “косяки” и то что чудно работало в интерпертаторе, не будет работать так как нужно в скомпилированом виде..
Когда я экспериментировал с нуиткой, екзешник собирался но не хотел работать пока я не добавил “import win32timezone, encodings” в скрипт, хотя ни один из этих модулей напрямую не использовался.
PS ссылки на программы легко гугляться по названию.
[code python][/code]
Отредактировано PEHDOM (Сен. 26, 2017 11:55:57)
Офлайн