PyInstallerおよびcx_Freezeとの互換性

PyInstallerおよびcx_Freezeとの互換性

‘Aspose.Slides for Python via .NET’拡張は単にPython C拡張であり、PyInstallerやcx_Freeze(または類似のツール)の助けを借りてプログラム依存関係として凍結できます。これは、PyInstallerやcx_Freezeのようなツールを使用してPythonスクリプトから実行可能ファイルを作成できることを意味します。これらのツールは、コードと依存関係を単一のファイルに凍結するため、他のマシンでPythonや他のライブラリを必要とせずに実行できます。これにより、他の人にPythonアプリケーションを配布しやすくなります。

‘Aspose.Slides for Python via .NET’拡張をプログラム依存関係として凍結する方法を、Aspose.Slidesを使用した簡単なプログラムの例を示して説明します。

PyInstaller

一般的に、‘Aspose.Slides for Python via .NET’拡張に依存するプログラムをパッケージ化する際に特別なことを行う必要はありません。プログラムがPyInstallerに見える形で拡張をインポートすると、その拡張はプログラムと一緒にパッケージされます。‘Aspose.Slides for Python via .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のオプションを使用します。拡張の依存関係は、‘Aspose.Slides for Python via .NET’拡張に付属するPyInstallerフックで指定されます。

slide_app.spec:

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

cx_Freeze

cx_Freezeを使ってプログラムを凍結するには、使用している’Aspose.Slides for Python via .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