Kompatybilność z PyInstaller i cx_Freeze
Wprowadzenie
Aspose.Slides for Python via .NET są standardowymi rozszerzeniami C Pythona, więc mogą być zamrażane jako zależności programu przy użyciu narzędzi takich jak PyInstaller i cx_Freeze (lub podobnych). Umożliwia to tworzenie plików wykonywalnych z Twoich skryptów Pythona. Takie narzędzia nazywane są „freezerami”, ponieważ pakują Twój kod i jego zależności w jeden plik dystrybuowalny, który działa na innych komputerach bez konieczności instalacji Pythona ani dodatkowych bibliotek. Podejście to upraszcza rozpowszechnianie aplikacji Pythona.
Zamrażanie rozszerzenia Aspose.Slides for Python via .NET jako zależności przedstawiono poniżej przy użyciu prostego programu wykorzystującego Aspose.Slides.
PyInstaller
Zazwyczaj nie jest wymagane nic szczególnego przy pakowaniu programu zależnego od rozszerzenia Aspose.Slides for Python via .NET. Gdy program importuje rozszerzenie w sposób widoczny dla PyInstaller, rozszerzenie zostanie dołączone do programu. Ponieważ Aspose.Slides for Python via .NET zawiera hooki PyInstaller, jego zależności są automatycznie wykrywane i kopiowane do pakietu.
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
Jednak PyInstaller może czasami pominąć ukryte importy — moduły importowane dynamicznie lub pośrednio przez Twój kod. Aby dodać ukryty import, użyj opcji PyInstaller. Zależności rozszerzenia są określone w hookach PyInstaller dostarczanych wraz z Aspose.Slides for Python via .NET.
slide_app.spec:
a = Analysis(
['slide_app.py'],
...
hiddenimports=['aspose.slides']
)
$ pyinstaller slide_app.spec
cx_Freeze
Aby zamrozić program przy użyciu cx_Freeze, skonfiguruj go tak, aby zawierał główny pakiet rozszerzenia Aspose.Slides for Python via .NET, którego używasz. Zapewnia to, że rozszerzenie i wszystkie zależne moduły zostaną skopiowane do builda razem z Twoją aplikacją.
Używanie skryptu cxfreeze
$ cxfreeze slide_app.py --packages=aspose
Używanie skryptu Setup
setup.py:
executables = [Executable('slide_app.py')]
options = {
'build_exe': {
'packages': ['aspose'],
}
}
setup(...
options=options,
executables=executables)
$ python setup.py build_exe
FAQ
Czy potrzebuję zainstalowanego Microsoft PowerPoint lub .NET na komputerze użytkownika?
Nie, PowerPoint nie jest wymagany. Aspose.Slides jest samodzielnym silnikiem; pakiet Python dostarcza wszystko, co jest potrzebne, jako rozszerzenie dla CPython. Użytkownik nie musi instalować .NET oddzielnie.
Jak prawidłowo dołączyć licencję do zamrożonej aplikacji?
Możesz przechowywać plik XML licencji obok pliku wykonywalnego lub osadzić go jako zasób i wczytać z dostępnej ścieżki przed pierwszym wywołaniem API. Ważne: nie modyfikuj zawartości XML (nawet nie zmieniaj podziału linii).
Co zrobić, jeśli czcionki renderują się inaczej po buildzie niż w środowisku deweloperskim?
Upewnij się, że używane czcionki są dostępne w docelowym środowisku (zawarte w pakiecie lub zainstalowane w systemie) oraz że ich ścieżki są prawidłowo rozwiązywane w czasie wykonywania; zachowanie czcionek jest szczególnie wrażliwe na Linuksie.