Compatibilità con PyInstaller e cx_Freeze

Introduzione

Le estensioni Aspose.Slides per Python via .NET sono estensioni C standard per Python, quindi possono essere congelate come dipendenze del programma con strumenti come PyInstaller e cx_Freeze (o simili). Questo consente di creare file eseguibili dai propri script Python. Tali strumenti sono chiamati “freezer” perché raggruppano il tuo codice e le sue dipendenze in un unico file distribuibile che può essere eseguito su altre macchine senza richiedere un’installazione di Python o librerie aggiuntive. Questo approccio semplifica la distribuzione delle tue applicazioni Python.

Il congelamento di un’estensione Aspose.Slides per Python via .NET come dipendenza è illustrato di seguito con un semplice programma che utilizza Aspose.Slides.

PyInstaller

In generale, non è necessario nulla di speciale quando si impacchetta un programma che dipende da un’estensione Aspose.Slides per Python via .NET. Quando un programma importa l’estensione in modo visibile a PyInstaller, l’estensione verrà inclusa nel programma. Poiché Aspose.Slides per Python via .NET include hook per PyInstaller, le sue dipendenze sono rilevate automaticamente e copiate nel bundle.

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.pptx", slides.export.SaveFormat.PPTX)
$ pyinstaller slide_app.py

Tuttavia, PyInstaller può occasionalmente non rilevare importazioni nascoste—moduli importati dinamicamente o indirettamente dal tuo codice. Per includere un’importazione nascosta, usa le opzioni di PyInstaller. Le dipendenze dell’estensione sono specificate negli hook di PyInstaller forniti con Aspose.Slides per Python via .NET.

slide_app.spec:

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

cx_Freeze

Per congelare un programma con cx_Freeze, configurarlo per includere il pacchetto radice dell’estensione Aspose.Slides per Python via .NET che stai usando. Questo garantisce che l’estensione e tutti i moduli dipendenti vengano copiati nella build insieme alla tua applicazione.

Using the cxfreeze Script

$ cxfreeze slide_app.py --packages=aspose

Using the Setup Script

setup.py:

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

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

setup(...
    options=options,
    executables=executables)
$ python setup.py build_exe

FAQ

Devo avere Microsoft PowerPoint o .NET installati sulla macchina dell’utente?

No, PowerPoint non è necessario. Aspose.Slides è un motore autonomo; il pacchetto Python fornisce tutto il necessario come estensione per CPython. L’utente non deve installare .NET separatamente.

Come devo allegare correttamente la licenza a un’applicazione congelata?

Puoi memorizzare il file XML della licenza accanto all’eseguibile o incorporarlo come risorsa e caricarlo da un percorso accessibile prima della prima chiamata API. Importante: non modificare il contenuto dell’XML (nemmeno le interruzioni di riga).

Cosa devo fare se i caratteri vengono visualizzati diversamente dopo la compilazione rispetto allo sviluppo?

Assicurati che i caratteri che utilizzi siano disponibili nell’ambiente di destinazione (inclusi o installati nel sistema) e che i loro percorsi siano risolti correttamente a runtime; il comportamento dei caratteri è particolarmente sensibile su Linux.