Совместимость с PyInstaller и cx_Freeze

Совместимость с PyInstaller и cx_Freeze

Расширения ‘Aspose.Slides для Python через .NET’ — это простые C-расширения для Python, которые могут быть заморожены с помощью PyInstaller и cx_Freeze (или аналогичных инструментов) в качестве зависимостей программы. Это означает, что вы можете использовать такие инструменты, как PyInstaller и cx_Freeze, чтобы создавать исполняемые файлы из ваших Python-скриптов. Эти инструменты называются “фризерами”, потому что они замораживают ваш код и зависимости в один файл, который может работать на других машинах без необходимости установки Python или других библиотек. Это облегчает распространение ваших Python-приложений.

Пример заморозки расширения ‘Aspose.Slides для Python через .NET’ в качестве зависимости программы проиллюстрирован на примере простой программы, использующей Aspose.Slides.

PyInstaller

В общем, при упаковке программы, зависящей от расширения ‘Aspose.Slides для Python через .NET’, ничего особенного делать не нужно. Когда программа импортирует расширение таким образом, который виден PyInstaller, расширение будет упаковано вместе с программой. Поскольку расширения ‘Aspose.Slides для Python через .NET’ поставляются с хуками PyInstaller, их собственные зависимости будут найдены и скопированы в пакет.

slide_app.py:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    slide.shapes.add_auto_shape(slides.ShapeType.LINE, 50.0, 150.0, 300.0, 0.0)
    presentation.save("NewPresentation_out.pptx", slides.export.SaveFormat.PPTX)
$ pyinstaller slide_app.py

Однако иногда PyInstaller не может обнаружить некоторые скрытые импорты, которые представляют собой модули, импортируемые динамически или косвенно вашим кодом. Чтобы обработать скрытый импорт в PyInstaller, используйте параметры PyInstaller. Зависимости расширения указываются в хуках PyInstaller, которые поставляются с расширением ‘Aspose.Slides для Python через .NET’.

slide_app.spec:

a = Analysis(
    ['slide_app.py'],
    ...
    hiddenimports=['aspose.slides']
)
$ pyinstaller slide_app.spec

cx_Freeze

Чтобы заморозить программу, используя cx_Freeze, используйте его параметры для заморозки корневого пакета расширения ‘Aspose.Slides для Python через .NET’, которое вы используете. Это обеспечит копирование расширения и модулей, от которых оно зависит, вместе с программой.

Использование скрипта cxfreeze

$ cxfreeze slide_app.py --packages=aspose

Использование скрипта Setup

setup.py:

executables = [Executable('slide_app.py')]

options = {
    'build_exe': {
        'packages': ['aspose'],
    }
}

setup(...
    options=options,
    executables=executables)

$ python setup.py build_exe